在WPF应用程序中渲染OpenGL

时间:2017-05-28 19:21:53

标签: c# wpf opengl visualization

我尝试使用集成的OpenGL可视化创建WPF应用程序。

我发现the sample project SharpGL它帮助我将opengl代码集成到我的wpf程序中。

现在我只想绘制一个具有以下属性的矩形:

40 x coordinates = columns
48 y coordinates = rows

每个(x,y)坐标都有一个我在List<float>中定义的值。 List<float>是动态的,所以它会一直在变化。 目标也是在绘制的矩形中实时显示值。

Like:
          y-coord
x coord   0  2  0  3  7  0  1  ..40
          4  5  3  0  6  0  5  ..40
          .  .
          .  .
          48 48

不幸的是,当我尝试绘制矩形时,我已经失败了。

 private void openGLControl_OpenGLDraw(object sender, OpenGLEventArgs args)
    {
        //  Get the OpenGL object.
        OpenGL gl = openGLControl.OpenGL;

        //  Clear the color and depth buffer.
        gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT);

        //  Load the identity matrix.
        //gl.LoadIdentity();
        gl.PolygonMode(FaceMode.FrontAndBack, PolygonMode.Filled);
        gl.Color(0,0,0);
        //  Draw a coloured pyramid.
        gl.Begin(OpenGL.GL_QUADS);
        gl.Vertex(-1.0f, 1.0f);
        gl.Color(200,1,1);
        gl.Vertex(-1.0f, 0.0f);
        gl.Color(200, 1, 1);
        gl.Vertex(1.0f, 0.0f);
        gl.Color(200, 1, 1);
        gl.Vertex(1.0f, 1.0f);
        gl.Color(200, 1, 1);
        gl.End();

        //  Nudge the rotation.
        //rotation += 3.0f;
    }

我的代码只显示一个黑色窗口。

我怎么能意识到这一点?

1 个答案:

答案 0 :(得分:1)

您很可能忘记在 openGLControl_OpenGLDraw()方法的末尾调用 gl.Flush() gl.Finish() 。在你调用任何这些方法之前(或者在双缓冲的情况下 gl.SwapBuffers()),你调用的每个绘图方法只会被缓冲但不会被执行。