public void Init(object sender, OpenGLEventArgs args) { SceneControl = sender as OpenGLControlJOG; // Set up the view. MvpBuilder.FovRadians = (float)Math.PI / 2f; // Set FOV to 90° MvpBuilder.Far = 100f; MvpBuilder.Near = 0.01f; MvpBuilder.Width = (int)SceneControl.ActualWidth; MvpBuilder.Height = (int)SceneControl.ActualHeight; MvpBuilder.TranslationZ = -10; MvpBuilder.BuildPerspectiveProjection(); MvpBuilder.BuildTurntableModelview(); // Create a shader program. SCProgram = new LinesProgram(GL); ProjectionMatrix = MvpBuilder.ProjectionMatrix; ModelviewMatrix = MvpBuilder.ModelviewMatrix; AddData(GL); GL.Enable(OpenGL.GL_DEPTH_TEST); GL.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); }
public void PrepareVAO(OpenGL gl, LinesProgram program) { var vertArrIds = new uint[1]; gl.GenVertexArrays(1, vertArrIds); Vao = vertArrIds[0]; gl.BindVertexArray(Vao); BindVBOs(gl, program); gl.EnableVertexAttribArray(0); gl.BindVertexArray(0); }
public void BindVBOs(OpenGL gl, LinesProgram program) { var attribPos = program.Attribs["Position"]; gl.BindBuffer(_vboTarget, Position); gl.VertexAttribPointer(attribPos, 3, OpenGL.GL_FLOAT, false, 0, IntPtr.Zero); gl.EnableVertexAttribArray(attribPos); attribPos = program.Attribs["ColorValue"]; gl.BindBuffer(_vboTarget, ColorValue); gl.VertexAttribPointer(attribPos, 3, OpenGL.GL_FLOAT, false, 0, IntPtr.Zero); gl.VertexAttribDivisor(attribPos, 1); gl.EnableVertexAttribArray(attribPos); if (IndicesCount > 0) gl.BindBuffer(_iboTarget, Ibo); }
public void BindVBOs(OpenGL gl, LinesProgram program) { var attribPos = program.Attribs["Position"]; gl.BindBuffer(_vboTarget, Position); gl.VertexAttribPointer(attribPos, 3, OpenGL.GL_FLOAT, false, 0, IntPtr.Zero); gl.EnableVertexAttribArray(attribPos); attribPos = program.Attribs["ColorValue"]; gl.BindBuffer(_vboTarget, ColorValue); gl.VertexAttribPointer(attribPos, 3, OpenGL.GL_FLOAT, false, 0, IntPtr.Zero); gl.VertexAttribDivisor(attribPos, 1); gl.EnableVertexAttribArray(attribPos); if (IndicesCount > 0) { gl.BindBuffer(_iboTarget, Ibo); } }