Tom*_*ace 6 opengl-es glsl vertex-shader fragment-shader opengl-es-2.0
我对着色器仍然缺乏经验,但我正在很好地攀登学习曲线.
今天早上我偶然发现的一件事是努力在片段和顶点着色器中使用同名的制服.
可以在两个着色器中定义制服,但只能在一个或另一个着色器中访问它,但不能同时访问两者.如果我尝试访问两者中的着色器,程序将无法编译.
我的最后一个想法是将它们编译为单独的符号,但除了glGetUniformLocation之外我不知道如何访问它们.使用相同的字符串调用两次返回相同的统一位置...不是很好的帮助.
着色器非常简单,除了对渲染没有影响的单线工作或非测试外,一切都很完美.
是否有一种特殊方法可以在两个着色器之间使用具有相同值的同名统一?
Tom*_*ace 11
解决了!根据我的经验,精度限定符 通常不是必需的.我没有使用它......因为我的制服是一个整数.
我读了一个确认,这里的顶点和片段着色器之间的制服可以同名:
http://www.gamedev.net/topic/535321-glsl-the-same-named-uniform-in-vertex-and-fragment-shaders/
所以我相信这是我自己的错误.
最后,我尝试添加highp精度qualifer,并解决了崩溃的问题.
技术上:
设置1(崩溃)
Vertex shader:
uniform int frameNum;
Fragment shader:
uniform int frameNum;
Run Code Online (Sandbox Code Playgroud)
设置2(崩溃)
Vertex shader:
uniform highp int frameNum;
Fragment shader:
uniform int frameNum;
Run Code Online (Sandbox Code Playgroud)
设置3(成功)
Vertex shader:
uniform highp int frameNum;
Fragment shader:
uniform highp int frameNum;
Run Code Online (Sandbox Code Playgroud)
设置4(成功)
Vertex shader:
uniform int frameNum;
Fragment shader:
uniform highp int frameNum;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2649 次 |
| 最近记录: |