在OpenGL中渲染透明对象

时间:2011-10-05 00:42:27

标签: opengl

我尝试使用opengl渲染一些3d对象。要求是我需要隐藏在另一个透明对象后面的所有透明对象。所有三角形都在单个三角形缓冲区中,并将立即绘制。请稍微说清楚。

2 个答案:

答案 0 :(得分:5)

尝试使用glDepthMask():

    //Render all opaque objects
    glDepthMask(false); //disable z-testing
    //Render all transparent objects*
    glDepthMask(true); //enable z-testing (for the next frame)

*从技术上讲,从后向前渲染透明对象,但如果不这样做,则很少注意到。

答案 1 :(得分:3)

您可以通过对场景进行排序来实现此目的,这是您必须要做的事情才能使透明度正常工作。

以下是您需要做的事情:

  1. 启用z-buffer写入和测试
  2. 渲染所有不透明对象
  3. 从前到后渲染所有透明对象。 z缓冲区将阻止透明对象显示在其他透明对象后面。