Я использую OpenTK, который является OpenGL в C #, поэтому любой ответ в OpenGL меня устраивает …
У меня есть 3D-объект, что я хочу сделать, это нарисовать некоторые линии (каркас) и отображать только их (я знаю, кроме GLPolygonMode — это не то, что я хочу делать)
У меня есть свой собственный алгоритм рисования линий и, используя его, я хочу нарисовать каркас и отобразить его на экране. После нескольких часов копания в интернете я узнал, что я могу сделать это, используя backbuffer, но не знаю, как …
вот пример моего кода рисования. Я рисую пиксель на растровом изображении (это не так :()
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()
и он переключит задний буфер как передний буфер, и наоборот.
Поскольку передний буфер — это то, что отображается на экране, вы увидите свой чертеж.
И, конечно, вы не забудете звонок OpenTK.Graphics.OpenGL.GL.Begin()
с уважением BeginMode
, а также OpenTK.Graphics.OpenGL.GL.End()
,
Других решений пока нет …