OpenGL / OpenTK后台缓冲器用我自己的算法画线

OpenGL/OpenTK backbuffer drawing lines with my own algorithm

本文关键字:自己的 算法 我自己 OpenTK 后台 缓冲器 OpenGL      更新时间:2023-10-16

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

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

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

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

有没有办法在缓冲区上绘制,然后将其显示在屏幕上?或者还有其他方法可以做到这一点吗?

考虑到您是OpenGL的新手:

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

当然,你不要忘记与适当的BeginMode OpenTK.Graphics.OpenGL.GL.Begin()的呼唤,OpenTK.Graphics.OpenGL.GL.End().