首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >隐藏魔方内部布线

隐藏魔方内部布线
EN

Stack Overflow用户
提问于 2010-08-04 20:13:53
回答 3查看 332关注 0票数 0

在Java/OpenGL应用程序的上下文中,我绘制了一个仅由27个较小的立方体组成的黑色连线(不填充)大立方体。为此,我编写了以下代码:

代码语言:javascript
运行
复制
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几何时绘制的虚线。

提前感谢您的帮助

手工操作

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-04 20:18:15

启用深度测试(glEnable(GL_DEPTH_TEST))并将四边形放置在立方体的表面上。

若要绘制四边形,请使用glBegin(GL_QUADS),然后使用四个顶点和glEnd()调用。

票数 1
EN

Stack Overflow用户

发布于 2010-08-04 20:56:04

使用黑色多边形绘制所有立方体(或禁用颜色输出: glColorMask(false,false);):这将填充深度缓冲区。

然后画出你的线条。被多边形隐藏的区域将不会显示。不过,还是会有z-fighting,所以glDepthTest(GL_LEQUAL);

如果你想绘制“不可见”的虚线,这是不够的。您可以使用glDepthTest(GL_GREATER)重新绘制;

另一种解决方案是使用实线绘制面对摄影机的多边形,并使用虚线绘制其他多边形。这是一个简单的点积(camDir.faceNorm)。

票数 0
EN

Stack Overflow用户

发布于 2010-08-08 01:22:19

使用glPolygonOffset()在具有相同坐标的多边形上方(或下方)淹没或显示线框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3405354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档