【问题标题】:JOGL Textures are semi-transparentJOGL 纹理是半透明的
【发布时间】:2011-10-03 23:42:14
【问题描述】:

对不起,如果这是一个简单的修复,但我似乎找不到解决方案。

我通过制作四个四边形创建了一个带有纹理的盒子。但是,当我旋转框以查看它的渲染方式时,应该不可见的纹理显示在其他纹理的顶部。

我认为这与它们的呈现顺序有关。我先渲染盒子的正面,这样当我旋转到后面时,前面的纹理会显示在后面。

我记得看到过一些关于“剔除”的内容,但我找不到任何文档。任何帮助我指出正确方向的帮助将不胜感激!

【问题讨论】:

  • 您能告诉我们更多细节吗?你谈到画一个盒子,但你也提到了 4 个面,而一个盒子通常有六个。你确定你把你的脸画到了正确的地方吗?如果只使用颜色而不是纹理来区分面部会发生什么?

标签: opengl rendering textures jogl


【解决方案1】:

首先确保您启用了深度测试,并且盒子中四边形的“z”值是正确的。您的问题似乎是您对四边形使用相同的深度值,或者只是禁用了深度测试。

快速搜索给了我这个链接。希望它会有所帮助。 http://www.leolol.com/drupal/tutorials/3d-graphics-jogl-opengl-etc/jogl-lesson-4-3d-shapes-and-rotation-opengl

PS:你这篇文章的标题不支持你的问题:(

【讨论】:

  • 我为 2D 项目启用了深度测试,这导致它们根本不透明。你的评论让我走上了正轨!
【解决方案2】:

这听起来(虽然看起来会更好,意味着一些代码)更像是一个深度测试问题,而不是一个剔除问题。您确定您启用了深度测试 (glEnable(GL_DEPTH_TEST)) 并检索了带有深度缓冲区的上下文吗?

【讨论】:

  • @DJClayworth 不,他们为什么要这样做?如果您先绘制正面然后再绘制背面,如果禁用深度测试,则背面将始终在正面上方可见。也许您谈论启用背面剔除的情况,但首先,这不是默认情况,其次,背面剔除应该用于优化目的而不是隐藏表面去除,因为后者仅适用于像立方体这样简单的凸面物体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多