输出ModelView矩阵坐标

时间:2013-11-08 17:33:19

标签: matrix opengl-es-2.0

在我应用各种变换后,我正在尝试在我的程序中以数学方式跟踪我的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 个答案:

答案 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;