我无法在OpenGL中渲染重叠对象。
我正在调用绘制对象的函数,这样如果我调用drawB()然后调用drawA(),则A位于B之上,B可能会被A隐藏。
一切正常,直到发生A是一条线(GL_LINES)而B是一个多边形(GL_POLYGON)。如果发生这种情况,应将B放置在底部,将其绘制在A。
上此时我已禁用GL_DEPTH_TEST。我尝试启用它,我尝试了glDepthMask和glPolygonOffset,但没有一个工作。我认为我一直在使用它们。 任何想法如何以正确的顺序绘制这些对象?
**编辑: 显然问题是我没有清除GL_COLOR_BUFFER_BIT,但我不是为了速度而清除。我必须找到一种不擦除gl_color_buffer_bit的方法,按顺序绘制对象**
它有一个由。定义的ortographic投影 glOrtho(r.left(),r.right(),r.bottom(),r.top(),0,2);
调用该函数时,将绘制背景对象,然后绘制前景。 我希望背景对象在前景下面绘制。
我的想法是我有两个布局,一个用于前景,一个用于背景。首先,背景中的每个对象都会自行绘制。然后前景中的每个对象都做同样的事情。每个对象都有一个显示列表,根据需要变换自己的坐标系。该显示列表的想法是允许对象嵌套,每个对象都有自己的坐标系,尽管它们是父坐标系。
在某种程度上,我在后台有一组对象
glBegin (GL_POLYGON) ;
for (angle = 0; angle<PI * 2;angle+=1){
glVertex2f (X + sin(angle) * Radius, Y + cos(angle) * Radius);
}
glEnd () ;
另一个对象,在前景布局中
glBegin(GL_LINES);
glVertex2f(m_x[m_currentPositionP1],m_y[m_currentPositionP1]);
glVertex2f(m_x[m_currentPositionP],m_y[m_currentPositionP]);
glEnd();
但这些线条看起来被多边形隐藏了
答案 0 :(得分:1)
glVertex2f
会得到很好的效果。
由于您需要不同的订单,因此需要指定Z坐标以确定哪个位于顶部。 glVertex3f
ftw。