OpenGL 着色器和常量
我需要在我的 GLSL 几何着色器中访问一堆常量值。我尝试了这种方式:
const int lookup[HUGE_NUMBER] = int[HUGE_NUMBER](1,32,...)
这适用于某些硬件。在 ATI 卡上,我收到警告,指出几何着色器的大小可能会导致性能不佳(听起来很合理)。在其他卡 (NV) 上,由于内存不足,着色器将无法链接。定义常量数组似乎是一种不受支持的黑客行为。
那么——该怎么走呢?我读过 DirectX 管道中的“常量缓冲区”。有类似的吗?或者我必须使用纹理?
I need to access a bunch of constant values in my GLSL geometry shader. I tried it this way:
const int lookup[HUGE_NUMBER] = int[HUGE_NUMBER](1,32,...)
This works... for some hardware. On ATI cards I'm getting warnings that the size of my geometry shader may cause poor performance (sounds reasonable). On other cards (NV) the shader won't link because of insufficient memory. Defining constant arrays seems to be a unsupported hack.
So - what's the way to go? I've read of "constant buffers" in the DirectX pipeline. Is there anything similar? Or do I have to use textures?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您至少可以使用以下任何接口:
You can go with at least any of the following interfaces: