osg::StateSet::TRANSPARENT_BIN和osg::StateSet::OPAQUE_BIN和osg::StateSet::DEFAULT_BIN有什么区别
时间: 2023-08-06 15:05:07 浏览: 123
OSG.rar_OpenSceneGraph_osg_osg视频教程_site:www.pudn.com
osg::StateSet 中的 TRANSPARENT_BIN、OPAQUE_BIN 和 DEFAULT_BIN 表示不同的渲染 bin,它们的区别主要在于渲染时的顺序和透明度处理。
- TRANSPARENT_BIN:透明渲染 bin,用于渲染具有透明效果的物体。在进行渲染时,透明物体需要先进行渲染,因此需要将它们放在透明渲染 bin 中。在渲染透明物体时,需要考虑物体的透明度,通常采用深度排序和 alpha 混合等方式来处理透明度。
- OPAQUE_BIN:不透明渲染 bin,用于渲染不具有透明效果的物体。在进行渲染时,不透明物体可以放在不透明渲染 bin 中。在渲染不透明物体时,不需要考虑透明度,通常只需要进行深度测试和深度写入等操作即可。
- DEFAULT_BIN:默认渲染 bin,用于普通的渲染效果。在进行渲染时,没有特殊需求的物体可以放在默认渲染 bin 中。
在进行渲染时,OpenGL 会按照渲染 bin 的顺序进行渲染,即先渲染 TRANSPARENT_BIN 中的物体,再渲染 OPAQUE_BIN 中的物体,最后渲染 DEFAULT_BIN 中的物体。这样可以确保透明物体不会遮挡不透明物体。
需要注意的是,TRANSPARENT_BIN 和 OPAQUE_BIN 只是一种约定俗成的习惯,实际上可以根据需要创建任意数量的渲染 bin,从而实现更加复杂的渲染效果。
阅读全文