2012-06-29 2 views
0

Я работаю со средой, созданной в OpenGL ES 2.0 на платформе iOS. У меня есть элементы, которые создаются при запуске, поэтому у меня есть исходные точки геометрии. Эти точки содержатся в матрицах моделей и моделей, но массив, содержащий исходные точки, никогда не обновляется через время жизни приложения. В результате я не могу ссылаться на эти пункты ни на что полезное. Есть ли способ получить текущие 3d-координаты этой части геометрии каким-либо другим способом (из матрицы модели или модели)? Если да, может ли кто-нибудь дать довольно ясный пример того, как это сделать?OpenGL ES 2.0 Изменить геометрию в modelMatrix

+0

Что вы подразумеваете под «Эти пункты содержатся в матрицах моделей и моделей»? Вы имеете в виду, что они трансформируются им? И что вы хотите преобразованную позицию мира вместо координат модели-пространства, которые генерируются в начале программы? – Ani

+0

Да, это в точности то, что моя проблема. – stealthdyno

ответ

0

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

GLfloat matrix[16]; 
    glGetFloatv (GL_MODELVIEW_MATRIX, matrix); 

Это вернет вам всю матрицу, можно умножить все вершины модели, которая будет находиться в мировом пространстве, чтобы делать то, что вы хотите :)

Надеются, что это помогает!

+0

О да, это действительно помогает. Спасибо! – stealthdyno

+0

На самом деле, если вы не возражаете пойти немного дальше с этим, это может помочь ... Я использую GLKit, каков правильный способ размножения массива верт, которые у меня есть с матрицей просмотра модели, которую я получаю от это? – stealthdyno

+0

Здесь (http://stackoverflow.com/questions/9029796/ios-glkit-matrix-multiplication-is-broken-as-far-as-i-can-tell) ссылка прямо здесь, на Stackoverflow, которая имеет фрагмент код для выполнения умножения матрицы с GLKit. – Ani

Смежные вопросы