Android opengl es 2.0 glpushmatrix и т. Д. - PullRequest
       26

Android opengl es 2.0 glpushmatrix и т. Д.

0 голосов
/ 05 января 2012

Я знаю, что не существует pushmatrix, popmatrix и стека матриц, loaddentity, rotate, translate и т. Д.

Как мне переписать существующий движок 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? У кого-нибудь есть для этого шема?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

Попробуйте использовать

Matrix.setIdentityM (mMMatrix, 0);

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

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

0 голосов
/ 06 января 2012

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

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

Я предлагаю вам начать с очень правильной реализации, которую вы можете найти в файле "esTransform.c" в каталоге примеров OpenGL Gold Book (Руководство по программированию OpenGL ES 2.0).

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...