internal void InitializeOpenGL()
        {
            SetThreadAffinity();

            if (SDL.SDL_GL_MakeCurrent(window.Window, context) < 0)
            {
                throw new InvalidOperationException($"Can not bind OpenGL context. (Error: {SDL.SDL_GetError()})");
            }

            OpenGL.Initialize(window.GLProfile == GLProfile.Legacy);
            OpenGL.CheckGLError();

            if (OpenGL.Profile != GLProfile.Legacy)
            {
                OpenGL.glGenVertexArrays(1, out var vao);
                OpenGL.CheckGLError();
                OpenGL.glBindVertexArray(vao);
                OpenGL.CheckGLError();
            }

            OpenGL.glEnableVertexAttribArray(Shader.VertexPosAttributeIndex);
            OpenGL.CheckGLError();
            OpenGL.glEnableVertexAttribArray(Shader.TexCoordAttributeIndex);
            OpenGL.CheckGLError();
            OpenGL.glEnableVertexAttribArray(Shader.TexMetadataAttributeIndex);
            OpenGL.CheckGLError();
            OpenGL.glEnableVertexAttribArray(Shader.TintAttributeIndex);
            OpenGL.CheckGLError();
        }
示例#2
0
        internal void InitializeOpenGL()
        {
            SetThreadAffinity();

            context = SDL.SDL_GL_CreateContext(window.Window);
            if (context == IntPtr.Zero || SDL.SDL_GL_MakeCurrent(window.Window, context) < 0)
            {
                throw new InvalidOperationException("Can not create OpenGL context. (Error: {0})".F(SDL.SDL_GetError()));
            }

            OpenGL.Initialize(window.GLProfile == GLProfile.Legacy);
            OpenGL.CheckGLError();

            if (OpenGL.Profile != GLProfile.Legacy)
            {
                uint vao;
                OpenGL.glGenVertexArrays(1, out vao);
                OpenGL.CheckGLError();
                OpenGL.glBindVertexArray(vao);
                OpenGL.CheckGLError();
            }

            OpenGL.glEnableVertexAttribArray(Shader.VertexPosAttributeIndex);
            OpenGL.CheckGLError();
            OpenGL.glEnableVertexAttribArray(Shader.TexCoordAttributeIndex);
            OpenGL.CheckGLError();
            OpenGL.glEnableVertexAttribArray(Shader.TexMetadataAttributeIndex);
            OpenGL.CheckGLError();
        }
示例#3
0
        public void BindOnceClose()
        {
#if DEBUG_VERTEX
            Console.WriteLine("BindOnceClose: " + VAOList[LocalVertexArrayIndex].ToString());
#endif
            OpenGL.glBindVertexArray(0);
            OpenGL.CheckGLError();
        }
示例#4
0
        public void CloseVAO()
        {
#if DEBUG_VERTEX
            Console.WriteLine("glBindVertexArray: closed" + "owner : " + ownername);
#endif
            OpenGL.glBindVertexArray(0);
            OpenGL.CheckGLError();
        }
示例#5
0
        public override void ActivateVAO()
        {
            if (LocalVertexArrayIndex == 0)
            {
                Console.WriteLine("ERROR IN VAO Activate index==0!");
            }
            OpenGL.glBindVertexArray(GraphicsContext.VAOList[LocalVertexArrayIndex]);
#if DEBUG_VERTEX
            Console.WriteLine("glBindVertexArray: " + VAOList[LocalVertexArrayIndex] + "owner : " + ownername);
#endif
            OpenGL.CheckGLError();
        }
示例#6
0
        public override void BindOnceOpen()
        {
            VerifyThreadAffinity();
#if DEBUG_VERTEX
            Console.WriteLine("BindOnceOpen: " + VAOList[LocalVertexArrayIndex].ToString());
#endif
            OpenGL.glBindVertexArray(GraphicsContext.VAOList[LocalVertexArrayIndex]);
            OpenGL.CheckGLError();
            OpenGL.glGenBuffers(1, out buffer);
            OpenGL.CheckGLError();
            OpenGL.glBindBuffer(OpenGL.GL_ARRAY_BUFFER, buffer);
            OpenGL.CheckGLError();
            ApplyFormatOnVertexBuffer();
        }