【问题标题】:selective depth testing possibility in openGLopenGL 中的选择性深度测试可能性
【发布时间】:2013-11-30 16:11:02
【问题描述】:

有没有办法只对属于球体的三角形启用深度测试,而原始深度缓冲区不受影响,只看到面向相机的球体三角形?

glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);
glDepthMask(false);

// 在这里渲染一个图元(圆锥或球体)

glDepthMask(true);

看起来我还能看到原始人的背面。

【问题讨论】:

  • 顺便问一下,这是什么语言?您可以使用 GL_TRUEGL_FALSE 代替 truefalse(它们是 C++ 关键字,但在 C 中未定义),从而使其更易于移植。
  • 代码是 C++。谢谢你的建议。我会改的。

标签: opengl buffer depth


【解决方案1】:

有没有办法只对属于球体的三角形启用深度测试,而原始深度缓冲区不受影响,只看到面向相机的球体三角形?

不,但您不必这样做。球体是凸形。实际上它是凸形的绝对原型。所以你所要做的就是摆脱背对你的三角形。很简单:启用背面剔除:

glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

请记住,要使所有球体三角形的缠绕一致,并且从外部观察时,必须与正面缠绕设置一致,才能进行此操作。通常它是逆时针方向的,但你可以用glFrontFace改变它

【讨论】:

  • 感谢您的回答。我忘了在我的问题中提到我已经启用了背面剔除。我编辑了我的问题并附上了圆锥的快照。请看一看。我仍然可以以某种方式看到背面。球体的结果也类似。
  • 问题已解决。在绘制图元之前,我再次错误地禁用了背面剔除。
猜你喜欢
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多