gl.end()之后的gl.begin() - >渲染是黑色的

时间:2015-11-16 15:30:59

标签: c# opengl

我试图在同一个环境中渲染不同的原始物。当我做的时候

        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();

我再也看不到了......

2 个答案:

答案 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()的返回值。