Opengl back object 可以从 front object 看到
Opengl back object can be seen from front object
我正在创建一个机场场景。
我想把塔画在机库后面,机库里的飞机也能看到。
如果我移动我的视线,飞机也会显示在塔楼或机库后面......
此外,当我从下方向上看时,表面物体也可见..
这是我的代码...
void draw()
{
glPushMatrix();
glTranslatef(-8.0, 0, 7);
drawControlTower(); //grey tower
glPopMatrix();
glPushMatrix();
glTranslatef(5, 1, 0);
drawHangars(); // Compund to store planes
glPopMatrix();
}
static void display()
{
if (hiddenDepth) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
else
{
glClear(GL_COLOR_BUFFER_BIT);
}
draw();
/* Check everything OK and update screen */
CheckGL();
glutSwapBuffers();
}
static void initGraphics (void)
{
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_ALWAYS);
/* Black background */
glClearColor(0, 0, 0, 0);
}
此行关闭深度测试。删除它:
glDepthFunc(GL_ALWAYS);
并且您应该始终清除深度缓冲区,方法是:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
问题是由 Z-fighting 引起的。地面的几何形状与跑道的几何形状具有相同的深度。
设置深度偏移 glPolygonOffset
并在绘制跑道之前启用深度偏移:
glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1.0f, -1.0f);
绘制跑道后禁用偏移:
glDisable(GL_POLYGON_OFFSET_FILL);
我正在创建一个机场场景。
我想把塔画在机库后面,机库里的飞机也能看到。 如果我移动我的视线,飞机也会显示在塔楼或机库后面...... 此外,当我从下方向上看时,表面物体也可见..
这是我的代码...
void draw()
{
glPushMatrix();
glTranslatef(-8.0, 0, 7);
drawControlTower(); //grey tower
glPopMatrix();
glPushMatrix();
glTranslatef(5, 1, 0);
drawHangars(); // Compund to store planes
glPopMatrix();
}
static void display()
{
if (hiddenDepth) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
else
{
glClear(GL_COLOR_BUFFER_BIT);
}
draw();
/* Check everything OK and update screen */
CheckGL();
glutSwapBuffers();
}
static void initGraphics (void)
{
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_ALWAYS);
/* Black background */
glClearColor(0, 0, 0, 0);
}
此行关闭深度测试。删除它:
glDepthFunc(GL_ALWAYS);
并且您应该始终清除深度缓冲区,方法是:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
问题是由 Z-fighting 引起的。地面的几何形状与跑道的几何形状具有相同的深度。
设置深度偏移 glPolygonOffset
并在绘制跑道之前启用深度偏移:
glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-1.0f, -1.0f);
绘制跑道后禁用偏移:
glDisable(GL_POLYGON_OFFSET_FILL);