gpt4 book ai didi

objective-c - 在顶点着色器中声明常量而不是文字。标准做法,还是不必要的严格?

转载 作者:可可西里 更新时间:2023-11-01 04:42:15 24 4
gpt4 key购买 nike

顶点着色器中,当然允许有限数量的uniform storage,据我所知,不同的系统可能会以略微不同的方式实现 GLSL编译代码的条款。我听说过在顶点着色器代码中使用常量而不是写出文字的建议。

例如,以下代码可能会导致可用统一存储空间的减少。 (我不太明白怎么做。)

示例 1:使用文字

vec4 myVector = vec4(1.0, 0.0, 0.0, 1.0);

据我了解,每次使用 1.00.0 都有可能占用一定数量的统一存储空间。因此,建议将以前的代码变成类似以下的代码:

示例 2:使用常量而不是文字

const float zero = 0.0;
const float one = 1.0;

vec4 myVector = vec4(one, zero, zero, one);

有没有人理解正在发生的事情背后的争论?我对代码没有任何问题,我只是想正确地理解这些东西,这样我以后就不会遇到问题。

我的正式问题如下:专门针对使用OpenGL ES 2.0iOS平台,写出来的东西是最佳实践使用文字(示例 1)或使用常量(示例 2)。我应该每次都花时间用常量写出东西,还是应该写出文字并仅在顶点着色器无法正确编译时才使用常量?

谢谢!

最佳答案

关于 Kimi 提到在规范中找不到任何内容,The OpenGL® ES Shading Language 的附录 A-7|规范确实包括以下内容:

When calculating the number of uniform variables used, any literal constants present in the shader source after preprocessing are included when calculating the storage requirements. Multiple instances of identical constants should count multiple times.

这可能是OpenGL® ES 2.0 Programming Guide中推荐的来源Kimi 引用。

但是,该规范并未强制执行此限制,并且大概任何实现都可以自由改进它,但我找不到任何关于 iOS GL 驱动程序的方法。

我很好奇,有没有人真正跟进过使用文字重载示例着色器的想法,以试图达到任何潜在的最大统一限制?

(抱歉...我本来打算将此答案发布为对 Kimi 的答案的评论,但还没有达到要求的 50 Rep 点数)。

关于objective-c - 在顶点着色器中声明常量而不是文字。标准做法,还是不必要的严格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com