Après avoir aider un autre utilisateur avec une question concernant la Réponse aux Événements Tactiles Android tutoriel, j'ai téléchargé le code source, et a été assez dérouté par ce que j'ai vu. Le tutoriel semble pas être en mesure de décider s'il souhaite utiliser la ligne de vecteurs ou de vecteurs colonnes, et il semble tout mélangé jusqu'à moi.
Sur l'Android page de la Matrice, ils prétendent que leur convention de la colonne vecteur/de la colonne principale, ce qui est typique de l'OpenGL.
Ai-je raison, ou est-il quelque chose que je suis absent? Voici les bouts de:
Commençons par créer un MVPMatrix en multipliant mProjMatrix * mVMatrix. So far So good.
// Set the camera position (View matrix)
Matrix.setLookAtM(mVMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
// Calculate the projection and view transformation
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0)
Ensuite, ils sont en ajoutant une rotation vers la gauche de la MVPMatrix? Cela semble un peu bizarre.
// Create a rotation for the triangle
Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f);
// Combine the rotation matrix with the projection and camera view
Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0)
Le téléchargement non transposé l'ordre.
GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);
Enfin dans leur shader, un vecteur*multiplication de matrice?
// the matrix must be included as a modifier of gl_Position
" gl_Position = vPosition * uMVPMatrix;"
Ajouter tout cela ensemble, nous obtenons:
gl_Position = vPosition * mRotation * mProjection * mView;
Qui n'est pas correcte par un tronçon de mon imagination. Est il une explication que je ne suis pas voyant que de ce qui se passe ici?