【发布时间】:2014-07-14 13:32:19
【问题描述】:
我正在使用 OpenGL 着色器生成器 v2.2.2 并从书中获取示例代码。 对于顶点着色器
#version 140
uniform float CoolestTemp;
uniform float TempRange;
uniform mat4 MVPMatrix;
in vec4 mcVertex;
in float VertexTemp;
out float Temperature;
void main() {
Temperature = (VertexTemp - CoolestTemp) / TempRange;
gl_Position = MVPMatrix * mcVertex;
}
对于片段着色器
#version 140
uniform vec3 CoolestColor;
uniform vec3 HottestColor;
in float Temperature;
out vec4 FragmentColor;
void main()
{
vec3 color = mix(CoolestColor, HottestColor, Temperature);
FragmentColor = vec4(color, 1.0);
}
我的问题是执行此代码,因为不支持版本 140 和 320。然后我尝试删除版本,编译器说“全局变量上下文中的无效限定符'in'”和'out'相同,然后尝试将in/out替换为'variing'但在片段着色器中“分配的左侧不能是只读的”错误出现。对于顶点着色器,警告在下一阶段将不会读取不同的字段。 我如何弄清楚它以使旧式代码适应新代码? 所以我对 GLSL 完全陌生
【问题讨论】:
标签: opengl-es fragment-shader vertex-shader