【问题标题】:Outputting ModelView Matrix Coordinates输出 ModelView 矩阵坐标
【发布时间】:2013-11-08 17:33:18
【问题描述】:

在应用各种转换后,我正尝试在数学上遵循我的程序中的 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)。

如何将矩阵的值输出到控制台?谢谢!

【问题讨论】:

    标签: matrix opengl-es-2.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;
    

    【讨论】:

    • 完美。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2014-08-17
    • 1970-01-01
    • 2012-06-11
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多