我想渲染深度缓冲区来做一些漂亮的阴影映射。我的绘图代码由许多着色器开关组成。如果我设置了glColorMask(0,0,0,0)
,并保留所有着色器程序,纹理和其他图形,并只渲染深度缓冲区,它会是'OK'吗?我的意思是,如果glColorMask禁用“写入颜色分量”,是否意味着每片段着色不会执行?关于glColorMask及其工作的快速问题
2
A
回答
2
对于渲染阴影贴图,通常需要将深度贴图(最好是正方形和两个幂,因为立体声驱动程序将此作为提示!)绑定到FBO,并使用一个着色器(尽可能简单)为了一切。你不想附加一个颜色缓冲区,因为你根本对颜色不感兴趣,而且它给ROP带来了更多不必要的压力(另外,有些硬件可以仅使用深度渲染速度提高一倍或更多)。你不想在许多着色器之间切换。
根据您是否进行“经典”阴影映射或诸如指数阴影贴图等更复杂的操作,您将使用的着色器可能非常简单(常量颜色,无深度写入),或者对深度执行一些(适度复杂的)计算,但通常不需要执行任何颜色计算,因为这意味着无用的计算将不会以任何方式显示。
1
不,着色器程序独立于固定功能管线执行。设置glColorMask
将不会影响着色器程序。
1
不,不管怎样片段操作都会被执行,但它们的结果将被零色彩掩码压扁。
如果您不希望执行某些片段操作 - 请使用正确的着色器程序,其中附加了一个空片段着色器,并将绘制缓冲区设置为GL_NONE。
还有另一种方法来禁用片段处理 - 使GL_RASTERIZER_DISCARD,但你不会在这种情况下:)
相关问题
- 1. 关于编译器及其工作原理的问题
- 2. 关于MVC的快速问题在PHP
- 3. 关于JSON的快速问题
- 4. 关于Java OOP及其问题
- 5. 关于TeamCity依赖关系的快速问题
- 6. 在PHP中快速查询相关内容的快速问题!
- 7. 关于Qt与C++的快速提问
- 8. 关于javascript(body-tag)的快速提问
- 9. 关于我的程序快速询问
- 10. 关于plist的快速提问
- 11. 关于XML解析的快速提问
- 12. 有关DOM Reflow的快速问题
- 13. 有关XPath/DOM快速的问题
- 14. Javascript/jQuery放置问题,以及一些快速问题
- 15. 快速矿工xpath查询的问题
- 16. 关于分离此函数的返回值的快速问题
- 17. 关于Java游戏的MVC框架的快速问题
- 18. 关于通过字符类的子集快速的问题
- 19. 夫妇关于Apache Lucene的快速问题
- 20. 关于Android应用程序设计的快速问题
- 21. 关于IIS 7 Asp.Net设置的快速问题
- 22. AS3:快速关于儿童和引用它们的问题
- 23. 关于CSS精灵和内存使用的快速问题
- 24. 关于MSBuild复制任务的快速问题
- 25. 关于在c递归的快速问题
- 26. 关于使用QTabWidget'addTab'函数的快速问题
- 27. 关于getline(cin,string)的C++快速问题
- 28. 关于切换事件的快速jQuery问题
- 29. 关于instanceof的工作问题
- 30. 快速jQuery问题
因此,让即使是深度值,我应该切换到固定管道,然后绘制深度缓冲? – 2011-02-09 19:14:51