2013-11-08 2 views
0

Я пытаюсь математически следовать координатам моей матрицы ModelView (и некоторых других матриц) в моей программе после того, как я применил различные преобразования. Я хочу, чтобы программа выводила эти координаты, но я не могу туда добраться.Вывод координат матрицы ModelView

modelViewMatrix = GLKMatrix4MakeTranslation(-1.5f, 1.25f, -4.0f); 
modelViewMatrix = GLKMatrix4Scale(modelViewMatrix, 2.75, 2, 0); 

GLfloat MVMatrix[16];  
if (not_printed) { 
    glGetFloatv(GL_MODELVIEW_MATRIX, MVMatrix); 
    for (int i=0; i<16; i++) { 
     printf("%f ", MVMatrix[i]); 
    } 
} 
not_printed = 0; 

Выход из этого числа представляет собой просто последовательность из 16 значений 0.0 (например, 0.0, 0.0, ..., 0.0).

Как получить значения моей матрицы для вывода на консоль? Благодаря!

ответ

1

Прежде всего, GLK не имеет отношения к стеку матрицы OpenGL, он создает свою собственную матрицу, а не умножает «текущую» матрицу OpenGL.

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

То, что вы хотите сделать, вместо этого, это:

modelViewMatrix = GLKMatrix4MakeTranslation(-1.5f, 1.25f, -4.0f); 
modelViewMatrix = GLKMatrix4Scale(modelViewMatrix, 2.75, 2, 0); 

if (not_printed) { 
    for (int i=0; i<16; i++) { 
     printf("%f ", modelViewMatrix.m [i]); 
    } 
    printf ("\n"); 
} 
not_printed = 0; 
+0

Совершенная. Огромное спасибо! – Alex