在Java/OpenGL应用程序的上下文中,我绘制了一个仅由27个较小的立方体组成的黑色连线(不填充)大立方体。为此,我编写了以下代码:
for (int x = 1; x <= 3; x++) {
for (int y = 1; y <= 3; y++) {
for (int z = 1; z <= 3; z++) {
wireCube(x - 2, 2 - y, 2 - z);
}
}
}
使用GL11.glBegin(GL11.GL_LINE_LOOP);
实现wireCube
方法
使用对gluPerspective
的正确调用来定义投影,使用对gluLookAt
的正确调用来定位“相机”,我能够根据需要显示我的大立方体,....I对此非常满意!
我现在的新问题是,如何修改这段代码,以便“隐藏”大立方体中的所有连接?为了帮助可视化场景,这些布线通常是在学校学习3D几何时绘制的虚线。
提前感谢您的帮助
手工操作
发布于 2010-08-04 20:18:15
启用深度测试(glEnable(GL_DEPTH_TEST)
)并将四边形放置在立方体的表面上。
若要绘制四边形,请使用glBegin(GL_QUADS)
,然后使用四个顶点和glEnd()
调用。
发布于 2010-08-04 20:56:04
使用黑色多边形绘制所有立方体(或禁用颜色输出: glColorMask(false,false);):这将填充深度缓冲区。
然后画出你的线条。被多边形隐藏的区域将不会显示。不过,还是会有z-fighting,所以glDepthTest(GL_LEQUAL);
如果你想绘制“不可见”的虚线,这是不够的。您可以使用glDepthTest(GL_GREATER)重新绘制;
另一种解决方案是使用实线绘制面对摄影机的多边形,并使用虚线绘制其他多边形。这是一个简单的点积(camDir.faceNorm)。
发布于 2010-08-08 01:22:19
使用glPolygonOffset()在具有相同坐标的多边形上方(或下方)淹没或显示线框。
https://stackoverflow.com/questions/3405354
复制相似问题