私はOpenGL ES 2.0エンジンでオンラインチュートリアル(lighthouse3d.com)からいくつかのシェーダを実装しようとしています。GLSL ESのローカル変数がクラッシュしますか?
何らかの理由で、main()のスコープで宣言されたANY変数がシェーダ全体を失敗させるという問題があります。例えば、これは失敗します。
void main(){
vec4 color;
gl_FragColor = vec4(1.0, 0.5, 0.5, 1.0);
}
が、これは完璧に動作します:
void main(){
//vec4 color;
gl_FragColor = vec4(1.0, 0.5, 0.5, 1.0);
}
同じことが私の頂点シェーダで発生します(EDIT:NVMは、断片のみシェーダで発生するようです)。のみあなたが期待するようにこの作品、例えばなどの属性、可変長、制服を、使用することです非定数値のいずれかのタイプを使用する方法:
uniform sampler2D texture;
varying lowp vec4 fragcol;
varying lowp vec2 texco;
void main(){
gl_FragColor = fragcol * texture2D(texture, texco);
}
また、私は、GLSL ES(またはこのバージョンが呼ばれているもの)に関するドキュメントやリソースを見つけるのに苦労しています。これは私が変数宣言に関連見つけることができるすべてであるhttp://old.siggraph.org/publications/2006cn/course16/KhronosSpecs/ESLanguageSpec1.10.11.pdf
:
[snip]There are no default types. All variable and function declarations must have a declared type, and optionally qualifiers. A variable is declared by specifying its type followed by one or more names separated by commas.[snip]
そして、それは私がやったまさにです:
宣言された型:私は見つけることができましたすべてがこれですvec4
の後に1つ以上の名前が続く:色;
vec4 color
は私が無知だ
EDIT: GLES20.glGetErrorは()、それはフルを指定するために精密な修飾を必要としてエラー1282
使用しているコンパイラ/インプリメンテーションは? –
おっと!私は何かを忘れていることを知っていた。アンドロイド開発キットを使用してAndroidで開発中です。投稿を更新する必要があります – AlexRamallo