openGL中的选择性深度测试可能性

时间:2013-11-30 16:11:02

标签: opengl buffer depth

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

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

//在这里渲染基元(圆锥或球体)

glDepthMask(true);

看起来我仍然可以看到原始的背面。cone rendering

1 个答案:

答案 0 :(得分:1)

  

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

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

glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

请记住,为了使其工作,所有球体的三角形的缠绕必须是一致的,并且当从外部观察时,与前侧缠绕设置一致。通常它是逆时针方式,但您可以使用glFrontFace

更改它