public void SelectShader(ShaderProgram program) { if (!FrameStarted) { throw new InvalidOperationException("Cannot select a Shader program when no frame is currently started on the GPU."); } ActiveShaderProgram = program; Gl.UseProgram(program.ProgramId); }
protected override void Renderer_Draw(RenderThread sender, FrameStageEventArgs args) { Log.WriteLine("Renderer_Draw(%@)", LogLevel.Message, args.CurrentTime.FrameIndex); Gl.BindVertexArray(VAO); CheckGlErrors("Renderer_Draw:BindVAO"); Gl.ClearColor(0.2f, 0.3f, 0.3f, 1.0f); Gl.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); CheckGlErrors("Renderer_Draw:Clear"); Gl.UseProgram(shader.ProgramId); CheckGlErrors("Renderer_Draw:UseProgram"); Gl.DrawElements(PrimitiveType.Triangles, 6, DrawElementsType.UnsignedInt, 0); CheckGlErrors("Renderer_Draw:DrawElements"); }