2012-01-05 2 views
0

Я знаю, что разве существуют pushmatrix, popmatrix и стек матрицы, loadidentity, вращать, переводить и т.д.Android OpenGL ES 2.0 glpushmatrix и т.д.

Как я могу переписать мой существующий 1,0-1,1 двигатель работать с 2.0?

Я попробовал этот первый:

void glRotate(float x, float y, float z) { 
    Matrix.setRotateM(mMMatrix, 0, x, 1, 0, 0); 
    Matrix.setRotateM(mMMatrix, 0, y, 0, 1, 0); 
    Matrix.setRotateM(mMMatrix, 0, z, 0, 0, 1); 

    Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0); 
    Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0); 
} 

void glTranslate(float x, float y, float z) { 
    Matrix.translateM(mMMatrix, 0, x, y, z); 

    Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0); 
    Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0); 
} 

glTranslate он не работает, как я могу перевести мою Моделла в мире?

glRotate только вращать в Z мой объект, x, y вообще не работает.

+ Как реализовать матричный стек/glpush/glpopmatrix? У кого-нибудь есть шема?

ответ

0

Попытка использования

Matrix.setIdentityM (mMMatrix, 0);

перед вычислением матричных преобразований.

И используйте Matrix.rotateM() вместо Matrix.setRotateM().

0

У меня была такая же проблема, как и вы около 1 года назад.

Мне пришлось писать с нуля большинство этих функций, и я могу заверить вас, что это кровавый беспорядок и очень склонный к ошибкам.

Предлагаю вам начать с очень правильной реализации, которую вы можете найти в файле «esTransform.c» в каталоге образцов GoldGroup OpenGL (руководство по программированию OpenGL ES 2.0).

Книга эта одна: http://opengles-book.com/downloads.html

код можно загрузить с Google Code здесь: http://code.google.com/p/opengles-book-samples/

я предлагаю вам в любом случае, чтобы купить книгу, он быстро становится ваш OpenGL ES 2.0 библия и это очень хорошо сделано.

Чтобы завершить, проверьте лицензию на использование исходного кода перед тем, как начать производство.