我正在学习有关使用书籍Learning Modern 3D Graphics Programming进行3D编程的知识,但我对iOS中着色器和GLES 2.0没有任何好运。我正在从xcode 4 opengl游戏模板开始工作,但是对本书第一个例子的修改是有意义的。iOS上的着色器差异
书中的第一个着色器不会编译出大量不同的错误。第一个顶点着色器
#version 330
layout(location = 0) in vec4 position;
void main()
{
gl_Position = position;
}
抱怨版本声明并拒绝允许使用布局作为说明符。我终于设法得到这个建立。
attribute vec4 position;
void main()
{
gl_Position = position;
}
又是第一个片段着色器拒绝建立因版本,且不会允许输出在全球段
#version 330
out vec4 outputColor;
void main()
{
outputColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
}
与错误
ERROR: 0:10: Invalid qualifiers 'out' in global variable context
好了,所以我设法得到第一个例子(一个简单的三角形)与以下着色器一起工作。
顶点着色器
#version 100
void main()
{
gl_FragColor = vec4(1.0,1.0,1.0,1.0);
}
片段着色器
attribute vec4 position;
void main()
{
gl_Position = position;
}
因此,这些工作,我想在接下来的章节中的第一着色的例子。
#version 330
out vec4 outputColor;
void main() {
float lerpValue = gl_FragCoord.y/500.0f;
outputColor = mix(vec4(1.0f, 1.0f, 1.0f, 1.0f),
vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpValue);
}
左右从早期的教,该版本修复的问题,即使工作,女的在彩车没有被允许,着色器仍然拒绝建立与此错误
ERROR: 0:13: 'float' : declaration must include a precision qualifier for type
有效则抱怨浮动。
我试着用Google找到差异的解释,但没有一个出现。我也通读了苹果文档寻找建议,但没有找到任何帮助。我不知道还有什么可以看的,或者我真的做错了什么。