2014-01-14 41 views
0

我使用OpenTK,這是​​OpenGL的在C#所以在OpenGL任何答案是令人滿意的我...的OpenGL/OpenTK後備緩衝繪圖用我自己的算法線

我有一個3D對象,我想要做的是繪製一些線(線框),並只顯示它們(我知道aop GLPolygonMode - 這不是我想要做的)

我有我自己的線 - 繪圖算法,並通過使用它,我想繪製線框並將其顯示在屏幕上。經過數小時的互聯網挖掘,我發現我可以通過使用backbuffer來做到這一點,但不知道如何... 這裏是我的繪圖代碼的示例我在位圖上畫一個像素(這不是:()

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

有什麼辦法上繪製一個緩衝區,然後在屏幕上顯示出來或有任何其他方式做到這一點

+2

好吧不是很神奇,但我們必須知道/想到這些變量'x,x2,d,col,xi,yi,ai,bi'嗎? –

+0

我剛剛刪除了我以前的評論,因爲我認爲你的代碼看起來像Bresenham的線算法。那是你正在嘗試做什麼? – wendelbsilva

+0

我得到了Bresenham算法,它是在一個位圖上繪圖,它的工作原理,我粘貼了一個樣本,因爲我希望你看到我在位圖上繪製它,並且想要在緩衝區上繪製它 – johns

回答

0

考慮到你是新來的OpenGL:??

OpenGL的默認配置使用雙緩衝,這意味着每次使用OpenTK.Graphics.OpenGL.GL.DrawXXX()方法或SetPixel()或其他類似的方法時,您正在繪製在後臺緩衝區中。 當您完成繪圖時,您可以撥打OpenTK.GLControl.SwapBuffers(),它會將後臺緩衝區切換爲前臺緩衝區,反之亦然。 由於前臺緩衝區是屏幕上顯示的內容,因此您將看到您的繪圖。

當然,您不會忘記撥打OpenTK.Graphics.OpenGL.GL.Begin()的電話,並附上相應的BeginModeOpenTK.Graphics.OpenGL.GL.End()