2011-03-28 119 views
0

假設代碼:刪除屏幕上的多邊形(OpenGL)?

glLoadIdentity(); 
    glTranslatef(-1.5f,0.0f,-6.0f); 
glBegin(GL_TRIANGLES); 
     glVertex3f(0.0f, 1.0f, 0.0f); 
     glVertex3f(-1.0f,-1.0f, 0.0f); 
     glVertex3f(1.0f,-1.0f, 0.0f); 
glEnd(); 

    glLoadIdentity(); 
    //Drawing another object... 

我怎麼會更改代碼刪除對象?我知道註釋掉glTranslatef()會消除這個三角形,但這是正式的方式嗎?

回答

2

如果你把glClear放在繪圖函數的開始處(繪圖函數通常是在一個循環中),你可以簡單地選擇不重繪三角形,這樣的繪圖將不會引用你的三角形。

另外,glTranslatef()函數不會移除三角形,glTranslatef()函數是隻移動當前矩陣的函數(你的情況與三角矩陣被移動到照相機視圖)

glClear()

http://www.khronos.org/opengles/documentation/opengles1_0/html/glClear.html

+0

謝謝,我喜歡這個主意。清除它看起來更加優雅,而不是沒有繪製它。 – AnimatedRNG 2011-03-28 01:36:01

+1

@ WRU4Android:他們提出你的問題並提出評論,我認爲你可能因爲OpenGL的一種場景圖形的(常見的)誤解而墮落,事實並非如此。 OpenGL基本上是一套非常複雜的繪圖工具:您從一些畫布(framebuffer)開始,然後使用OpenGL命令對其進行繪製。 glClear清除畫布上的所有內容;然後你畫出你想看到的。一些變化=>你重繪整個事情。 – datenwolf 2011-03-28 16:02:48

1

如果您要求如何讓三角形在後續幀中消失,則不需要。每一幀時間你負責重繪一切。 OpenGL不會記住你的三角形。

1

把一個if各地glBegin ... glVertex ... glEnd將是最直接的方式。