私はすでに2日間失ってしまいました。GLSL - 頂点属性のデータが間違っています
私は、アンドロイド用にopengles2.0を使用してコラージュアニメーションレンダラーを作成しました。シェーダをスキニングに使用します。コードはほぼ完成していて、私のHTC DesireSでは正常に動作します。
しかし、PowerVRチップセットを搭載したSetTopBoxで実行しようとすると、私のジオメトリは表示されません。デバッグの一日の後、私はシェーダの骨マトリクスの確証として= -1を得ているので、それが起こっていることを知りました。
私は電話機で== -1と確認しました。 SetTopBoxでは!= -1となります。
何が間違っている可能性がありますか? この大きなトラブルから私を救ってください。
申し訳ありませんがコードを入力してください。 ここに頂点シェーダがあります。私はvec2(boneIndices)が[1]と同様に[0]に-1を持つことを期待しています。 Powervrではそうではありません。私はexpectin午前属性ポインタ
glVertexAttribPointer(position, 3, GL_FLOAT, GL_FALSE, 13*sizeof(GLfloat), 0);
glVertexAttribPointer(texCoord, 2, GL_FLOAT, GL_FALSE, 13*sizeof(GLfloat), (GLvoid*)(3*sizeof(GLfloat)));
glVertexAttribPointer(boneIndices, 2, GL_FLOAT, GL_FALSE, 13*sizeof(GLfloat), (GLvoid*)(9*sizeof(GLfloat)));
glVertexAttribPointer(boneWeights, 2, GL_FLOAT, GL_FALSE, 13*sizeof(GLfloat), (GLvoid*)(11*sizeof(GLfloat)));
glEnableVertexAttribArray(position);
glEnableVertexAttribArray(texCoord);
glEnableVertexAttribArray(boneIndices);
glEnableVertexAttribArray(boneWeights);
私の頂点とインデックスバッファ
GLfloat vertices[13*6] =
{-0.5*size, -0.5*size, 0, 0,1, 1,1,1,1, -1,-1, 0,0,
-0.5*size, 0.5*size, 0, 0,0, 1,1,1,1, -1,-1, 0,0,
0.5*size, 0.5*size, 0, 1,0, 1,1,1,1, -1,-1, 0,0,
-0.5*size, -0.5*size, 0, 0,1, 1,1,1,1, -1,-1, 0,0,
0.5*size, 0.5*size, 0, 1,0, 1,1,1,1, -1,-1, 0,0,
0.5*size, -0.5*size, 0, 1,1, 1,1,1,1, -1,-1, 0,0 };
GLushort indices[]= {0,1,2, 3,4,5};
を設定
attribute vec4 vPosition;
attribute vec2 vTexCoord;
attribute vec2 boneIndices;
attribute vec2 boneWeights;
uniform mat4 boneMatrices[BNCNT];
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
varying mediump vec2 fTexCoord;
varying mediump vec3 col;
void main(){
vec4 tempPosition = vPosition;
int index = int(boneIndices.x);
col = vec3(1.0, 0.0, 0.0);
if(index >= 0){
col.y = 1.0;
tempPosition = (boneMatrices[index] * vPosition) * boneWeights.x;
}
index = int(boneIndices.y);
if(index >= 0){
col.z = 1.0;
tempPosition = (boneMatrices[index] * vPosition) * boneWeights.y + tempPosition;
}
gl_Position = projectionMatrix * viewMatrix * modelMatrix * tempPosition;
fTexCoord = vTexCoord;
}
gシェイダー内のインデックスは-1になります。しかし彼らはそうではありません。
-1を取得していますか?属性インデックス?いくつかのコードを表示できますか? –
コードを記述しないと申し訳ありません。 – CuriousChettai
だから、あなたは私たちにいくつかのコードを見せますか? –