gpt4 book ai didi

opengl-es - 在顶点和片段着色器中访问同名统一失败

转载 作者:行者123 更新时间:2023-12-03 08:16:03 25 4
gpt4 key购买 nike

我对着色器仍然非常缺乏经验,但我正在很好地攀登学习曲线。

今天早上我偶然发现了在片段和顶点着色器中使用同名统一的努力。

统一可以在两个着色器中定义,但只能在一个或另一个着色器中独占访问,但不能同时在两者中访问。如果我尝试访问两者中的着色器,则程序无法编译。

我的最后一个想法是将它们编译为单独的符号,但除了 glGetUniformLocation 之外,我不知道如何访问它们。用相同的字符串调用两次会返回相同的统一位置......不是一个很大的帮助。

着色器非常简单,除了对渲染没有影响的单行工作或不工作测试之外,一切都完美无缺。

是否有特殊方法可以在两个着色器之间使用具有相同值的同名制服?

最佳答案

解决了! 精度限定符 根据我的经验,通常不是必需的。我没有使用它......因为我的制服是一个整数。

我在这里阅读了一个确认,即统一可以在顶点着色器和片段着色器之间同名:

http://www.gamedev.net/topic/535321-glsl-the-same-named-uniform-in-vertex-and-fragment-shaders/

所以我相信这是我自己的错误。

最后,我尝试添加 精确限定符,这已经解决了崩溃的问题。

技术上:

设置 1 (碰撞)

Vertex shader:
uniform int frameNum;

Fragment shader:
uniform int frameNum;

设置 2 (碰撞)
Vertex shader:
uniform highp int frameNum;

Fragment shader:
uniform int frameNum;

设置 3 (成功)
Vertex shader:
uniform highp int frameNum;

Fragment shader:
uniform highp int frameNum;

设置 4 (成功)
Vertex shader:
uniform int frameNum;

Fragment shader:
uniform highp int frameNum;

关于opengl-es - 在顶点和片段着色器中访问同名统一失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22593729/

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