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(); }
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(); }
public void BindOnceClose() { #if DEBUG_VERTEX Console.WriteLine("BindOnceClose: " + VAOList[LocalVertexArrayIndex].ToString()); #endif OpenGL.glBindVertexArray(0); OpenGL.CheckGLError(); }
public void CloseVAO() { #if DEBUG_VERTEX Console.WriteLine("glBindVertexArray: closed" + "owner : " + ownername); #endif OpenGL.glBindVertexArray(0); OpenGL.CheckGLError(); }
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(); }
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(); }