OpenGL中将深度缓存设为只读

在红包书里头有这么一说,大概是说有时候要渲染一个透明的物体,这样的话如果场景简单,我们可以通过决定绘制顺序来保证绘制结果正确,但是如果加入了场景变化等其他一系列变换,可能就不是那么容易了。更好的办法就是在绘制透明物体的时候将深度缓存设置成只读的,也就是可以进行深度检测,但是不写入深度结果
具体做法是:
glDepthMask(flase);
////绘制透明物体
glDepthMask(true);
最后一行讲深度缓存改成可写可读的。
这个技巧可以和模板缓存结合使用,可以创建出类似镜子的效果。
一个小的Demo结果如下:


posted @ 2009-08-22 18:16  gin@wzl  阅读(402)  评论(0编辑  收藏  举报