57
A
回答
71
是的,这是可能的。你声明的统一数组类似于你在C中的做法,例如
uniform float v[10];
然后你就可以使用glUniform{1,2,3,4}{f,i}v
GLfloat v[10] = {...};
glUniform1fv(glGetUniformLocation(program, "v"), 10, v);
7
是的,它可以声明在GLSL着色器制服的阵列设置它们的值。只是谷歌“glsl统一阵列”的一些例子(编辑:或见datenwolf的例子)。然而,有多少制服可以发送到不同的显卡(至少在较老的显示卡上有限制,我不确定目前的显示卡(尽管我想还是会有的))。
如果你决定走下来制服的路线,我会建议使用统一的缓冲器。根据http://www.opengl.org/wiki/Uniform_Buffer_Object,“统一缓冲区绑定之间的切换通常比切换程序中的几十个制服更快”。
如果你有大量的灯光和参数,你也可以发送数据为float缓冲区。
相关问题
- 1. 限制阵列
- 2. 复制阵列
- 3. 抑制阵列
- 4. 复制阵列
- 5. C#复制阵列到阵列
- 6. 从另一个阵列制作阵列
- 7. 复制1D阵列2D阵列
- 8. 如何将阵列复制到阵列
- 9. PHP从阵列复制参考阵列
- 10. 如何制作阵列阵列?
- 11. CF Web服务阵列与.NET Web服务阵列
- 12. 如何将阵列从服务器复制到现有阵列参考
- 13. PHP阵列定制
- 14. PHP - 阵列限制
- 15. 二进制阵列
- 16. 复制3D阵列
- 17. 复制阵列散列
- 18. 在C++复制阵列的堆叠阵列到阵列的阵列中的堆
- 19. Foxx服务阵列处理
- 20. Web服务阵列问题
- 21. XPC服务阵列崩溃
- 22. 角度服务阵列空
- 23. 复制C中的阵列
- 24. 阵列限制问题
- 25. 制作3D阵列MATLAB
- 26. 复制阵列的Java
- 27. 制作阵列相同
- 28. 强制关闭阵列
- 29. 绘制椭圆阵列
- 30. Laravel5.2定制阵列验证
谁想要一个可变数目的灯,才使阵列体面的能力,并保持有多少灯是当前活动的计数。 GLSL不允许变量大小的数组(所有数组大小必须是常数,硬编码值)。 – Miles