我正在学习关于3D编程的学习现代3D图形编程,但我对iOS中的着色器和GLES 2.0没有好运.我正在使用xcode 4 opengl游戏模板,尽管对书中的第一个例子进行了修改.
书中的第一个着色器不会编译出许多不同的错误.第一个顶点着色器
#version 330
layout(location = 0) in vec4 position;
void main()
{
gl_Position = position;
}
Run Code Online (Sandbox Code Playgroud)
抱怨版本声明并拒绝允许使用布局作为说明符.我终于设法让这个建立.
attribute vec4 position;
void main()
{
gl_Position = position;
}
Run Code Online (Sandbox Code Playgroud)
同样,第一个片段着色器由于版本而拒绝构建,并且不允许全局段中的输出
#version 330
out vec4 outputColor;
void main()
{
outputColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);
}
Run Code Online (Sandbox Code Playgroud)
随着错误
ERROR: 0:10: Invalid qualifiers 'out' in global variable context
Run Code Online (Sandbox Code Playgroud)
好的,所以我设法得到第一个例子(一个简单的三角形)来处理以下着色器.
顶点着色器
#version 100
void main()
{
gl_FragColor = vec4(1.0,1.0,1.0,1.0);
}
Run Code Online (Sandbox Code Playgroud)
片段着色器
attribute vec4 position;
void main()
{
gl_Position = position;
}
Run Code Online (Sandbox Code Playgroud)
所以那些工作,我尝试了下一章的第一个彩色例子.
#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);
}
Run Code Online (Sandbox Code Playgroud)
即使解决了来自eariler的固定问题,版本,浮点数不允许,着色器仍然拒绝使用此错误构建
ERROR: 0:13: 'float' : declaration must include a precision qualifier for type
Run Code Online (Sandbox Code Playgroud)
实际上它抱怨浮动.
我试过谷歌搜索找到差异的解释,但没有一个出现.我也读过苹果文档寻求建议,但没有找到帮助.我不确定在哪里看,或者我真正做错了什么.
| 归档时间: |
|
| 查看次数: |
6346 次 |
| 最近记录: |