mva*_*bem 13 c++ opengl shader glsl
我一直在为我的笔记本电脑调整我的游戏渲染器,它有一台Radeon HD 3850.这款芯片具有相当大的处理能力,但内存带宽有限,所以我一直试图将更多着色器工作转移到更少的传递.
以前,我使用的是简单的多通道模型:
为了提高这种方法的性能,我编写了一个新的渲染路径,它计算了动态构建自定义GLSL着色器的灯光数量和类型.这些着色器接受所有光参数作为制服,并在一次通过中完成所有照明.我期待遇到某种限制,所以我先用一盏灯测试它.然后三个.然后二十一,没有错误或文物,并有很好的表现.这引出了我的实际问题:
是否可以检索最大制服数量?
这种方法在较旧的硬件上是否可行,或者制服是否更加有限?
如果我把它推得太远,我会在什么时候出错?着色器编译?程序链接?使用该程序?
moo*_*dow 11
着色器制服通常由硬件实现为寄存器(或者有时通过将值直接修补到着色器微码,例如nVidia片段着色器).因此,该限制高度依赖于实现.
您可以通过查询GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB以及GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB顶点和片段着色器分别检索最大值.
| 归档时间: |
|
| 查看次数: |
4940 次 |
| 最近记录: |