将 GLfloat 作为统一传递失败(ios)

发布于 2024-11-15 10:37:07 字数 243 浏览 2 评论 0原文

我有一个着色器,声明了以下制服:

uniform highp float fr;

在我的渲染方法中,它被相应地设置:

GLfloat num = 1.0f;
glUniform1f(glGetUniformLocation(self.Program, "fr"), num);

但它根本没有被设置。这些看起来很基本,所以我不明白为什么它不起作用。 我使用了正确的语法吗?

I have a shader that has the following uniform declared:

uniform highp float fr;

In my rendering method, it gets set accordingly:

GLfloat num = 1.0f;
glUniform1f(glGetUniformLocation(self.Program, "fr"), num);

But it doesn't get set at all. These seems pretty basic so I can't spot why it isn't working.
Have I used the correct syntax?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半衾梦 2024-11-22 10:37:07

也许您没有在着色器代码中使用这个 fr 值?然后编译器会将其设置为非活动统一,并且不会真正将其包含在编译的程序中,glGetUniformLocation 将返回类似 -1 左右的索引。检查您的着色器以及 glGetUniformLocation 返回的值是什么。

干杯,
克日什托夫·扎布沃茨基

Maybe you are not using this fr value in shader code? Then compiler would make it inactive uniform and not really include it in compiled program, glGetUniformLocation would return index like -1 or so. Check your shader and what value is returned by glGetUniformLocation.

Cheers,
Krzysztof Zabłocki

小…楫夜泊 2024-11-22 10:37:07

我已经找到我的问题了。

我在调用使用程序之前设置了制服。对于找到此答案的任何人,请确保在为该程序设置制服之前调用使用程序。

I have found my issue.

I was setting the uniform before calling use program. For anyone that finds this answer, ensure you call use program before setting the uniform for that program.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文