OpenG-ES 2.0 を使用していくつかのオブジェクトを描画するアプリケーションがあります。アプリケーションは、一部の samsung デバイスでレンダリングに失敗します。デバッグを試みたところ、頂点シェーダーとフラグメント シェーダーに問題があるようです。
これが私のシェーダーコードです:
Vertex Shader:
attribute vec3 Position;
attribute vec4 SourceColor;
varying vec4 DestinationColor;
uniform mat4 Projection;
uniform mat4 Modelview;
uniform mat4 CordTransform;
attribute float flag;
attribute float clubColorFlag;
attribute vec2 TexCoordIn; // New
varying vec2 TexCoordOut; // New
varying float flagS;
varying float flagClubColorS;
void main(void) {
gl_Position = Projection * Modelview * vec4(Position,1.0);
flagS = flag;
flagClubColorS = clubColorFlag;
if (clubColorFlag == 1.0) {
DestinationColor = vec4(0.190,0.309,0.309,1.0);
}
else {
DestinationColor = SourceColor;
}
exCoordOut = TexCoordIn;
gl_PointSize = 1.0;
}
フラグメント シェーダー:
varying lowp vec4 DestinationColor;
varying lowp vec2 TexCoordOut; // New
uniform sampler2D Texture; // New
varying lowp float flagS;
varying lowp float flagClubColorS;
void main(void) {
gl_FragColor = DestinationColor;
if(flagS == 1.0){
gl_FragColor = DestinationColor;
}
else if (flagClubColorS == 1.0) {
gl_FragColor = DestinationColor;
}
else if (flagS == 0.0){
gl_FragColor = DestinationColor * texture2D(Texture, TexCoordOut); // New
}
}
何が問題なのかわかりませんが、フラグメント シェーダーの if-else 部分をコメント アウトすると、テクスチャが均一 -1 になります。他のシナリオでは、ゼロです。どちらのシェーダーもエラーなしでコンパイルされます。
精度に関係ありますか?問題のデバッグを手伝ってください。