我试图在同一个环境中渲染不同的原始物。当我做的时候
OpenGL gl = GlControl.OpenGL;
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | openGL.GL_DEPTH_BUFFER_BIT);
gl.LoadIdentity();
gl.Begin(OpenGL.GL_LINES);
gl.Color(1.0f, 0.0f, 0.0f);
gl.Vertex(0.0f, 1.0f, 0.0f);
gl.Color(0.0f, 1.0f, 0.0f);
gl.Vertex(-1.0f, -1.0f, 1.0f);
gl.End();
一切都很好。但是当我做的时候
OpenGL gl = GlControl.OpenGL;
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | openGL.GL_DEPTH_BUFFER_BIT);
gl.LoadIdentity();
gl.Begin(OpenGL.GL_LINES);
gl.Color(1.0f, 0.0f, 0.0f);
gl.Vertex(0.0f, 1.0f, 0.0f);
gl.Color(0.0f, 1.0f, 0.0f);
gl.Vertex(-1.0f, -1.0f, 1.0f);
gl.End();
gl.Begin(OpenGL.GL_POINT);
gl.Color(1.0f, 0, 0);
gl.Vertex(0.0f, 0.0f, 1.0f);
gl.End();
我再也看不到了......
答案 0 :(得分:4)
立即模式glBegin
(您不应使用BTW)的有效令牌不包含GL_POINT
。你可能意味着GL_POINTS
。使用无效令牌会导致OpenGL错误,这可能会使您的特定C#绑定失效。
答案 1 :(得分:3)
GL_POINT
不允许作为gl.Begin
的参数,而应该通过GL_INVALID_ENUM
。如果你想绘制点,正确的代码将是
gl.Begin(OpenGL.GL_POINTS);
^
你一定要检查glGetError()的返回值。