私は本の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;
}
は、再び第1フラグメントシェーダが原因バージョンに構築することを拒否し、私はエラーでグローバルセグメント
#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;
}
ので、それらが働いて、私は次の章で第1着色例を試みました。
#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);
}
がさえeariler、バージョンから修正された問題を回避作業、Fの中には許可されていない浮かぶ、シェーダはまだ効果的にそれがフロート文句を言っているこのエラー
ERROR: 0:13: 'float' : declaration must include a precision qualifier for type
でビルドすることを拒否します。
私は、違いの説明を見つけるためにグーグルで試してみましたが、これらのどれも上がっていません。私はまた、リンゴのドキュメントを読んでアドバイスを探していて、助けが見つかりませんでした。私はどこを見るべきか、あるいは私が本当に間違っていることは分かりません。