我对我的矩阵做了什么错误才能使这个四边形像这样渲染?

时间:2014-09-10 19:33:36

标签: java opengl matrix lwjgl

我正尝试使用OpenGL 3.2在3D中渲染Quad

直接观看四边形时看起来很正常 enter image description here

然而,当我向侧面看,四边形不在屏幕的中心时,它会像这样扭曲 enter image description here

我觉得这与我处理矩阵的方式有关

这是我的矩阵类

中的乘法方法
public Matrix4f mul(Matrix4f m4f) {
    float[][] m = new float[4][4];
    for(int i = 0; i < 4; i++) {
        for(int j = 0; j < 4; j++) {
            float mij = 0;
            for(int k = 0; k < 4; k++) {
                mij += this.m[k][j] * m4f.m[i][k];
            }
            m[i][j] = mij;
        }
    }
    this.m = m;
    return this;

这是我计算视图矩阵的地方

public Matrix4f getViewMatrix() {
    Matrix4f m = Matrix4f.getNewIdentityMatrix();
    m.mul(Matrix4f.getNewRotationMatrix(-Math.toRadians(rotation.x), -Math.toRadians(rotation.y), 0));
    m.mul(Matrix4f.getNewTranslationMatrix(-pos.x, -pos.y, -pos.z));

    return m;
}

以下是我在顶点着色器中使用矩阵的方法

void main()
{
    gl_Position = proj * modelview * vec4(position, 1.0);
}

我知道我的透视投影矩阵按预期工作。

0 个答案:

没有答案