質問

Androidアプリケーションを開発しています。

次の頂点シェーダーがあります。

"attribute vec4 vertexPosition; 
attribute vec4 vertexNormal; 
attribute vec2 vertexTexCoord; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform mat4 modelViewProjectionMatrix; 

void main() 
{ 
   gl_Position = modelViewProjectionMatrix * vertexPosition; 
   normal = vertexNormal; 
   texCoord = vertexTexCoord; 
} 
";

そして、これはフラグメントシェーダーです:

precision mediump float; 

varying vec2 texCoord; 
varying vec4 normal; 

uniform sampler2D texSampler2D;

void main()
{ 
   gl_FragColor = texture2D(texSampler2D, texCoord); 
} 
";

vertextexcoordをアンバウンドしたままにした場合、問題はありますか?モデルにテクスチャがない場合は、別の頂点とフラグメントシェーダーを使用する必要があると思いますか?

ありがとう。

役に立ちましたか?

解決

はい、テクスチャのないモデル用の別のシェーダーが必要です。そうでなければ、実装依存行動を経験すると思います。

それに関連して、OpenGLドキュメントは次のように述べています

明示的にバインドされていないアクティブな属性は、GllinkProgramが呼び出されると、リンカーによってバインドされます。割り当てられた場所は、Gletattriblocationを呼び出すことでクエリをすることができます。

したがって、Vertex属性が有効になっている場合、属性の1つからVertextExcoordを取得しようとします。未解像度モデルに必要な属性の数以上が有効になっていない場合、何が起こるかわかりません。別のシェーダーを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top