2011-03-28 91 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将是最直接的方式。