OpenGL / OpenTK backbuffer使用我自己的算法绘制线条

时间:2014-01-14 21:22:39

标签: c# c++ opengl opentk

我正在使用OpenTK,它是C#中的OpenGL,所以opengl中的任何答案都让我满意......

我有一个3D对象,我想要做的是绘制一些线条(线框)并仅显示它们(我知道aobut GLPolygonMode - 这不是我想要做的)

我有自己的Line - Drawing算法,并且通过使用它我想绘制线框并在屏幕上显示它。经过几个小时的互联网挖掘,我发现我可以通过使用backbuffer来实现,但不知道如何... 这是我的绘图代码示例我在位图上绘制一个像素(不是它:()

while (x != x2)
{
    if (d >= 0)
    {
        x += xi;
        y += yi;
        d += ai;
    }
    else
    {
        d += bi;
        x += xi;
    }
    bitmap.SetPixel(x, y, col);
}

有没有办法在缓冲区上绘图然后在屏幕上显示?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

考虑到你是OpenGL的新手:

OpenGL的默认配置使用双缓冲。这意味着每次使用OpenTK.Graphics.OpenGL.GL.DrawXXX()方法或SetPixel()或其他类似的方法时,都会在后台缓冲区中绘图。 完成绘图后,调用OpenTK.GLControl.SwapBuffers()并将后缓冲区切换为前缓冲区,反之亦然。 由于前缓冲区是屏幕上显示的内容,因此您将看到绘图。

当然,您不会忘记使用OpenTK.Graphics.OpenGL.GL.Begin()BeginMode拨打OpenTK.Graphics.OpenGL.GL.End()的电话。