我正尝试使用OpenGL 3.2在3D中渲染Quad
直接观看四边形时看起来很正常
然而,当我向侧面看,四边形不在屏幕的中心时,它会像这样扭曲
我觉得这与我处理矩阵的方式有关
这是我的矩阵类
中的乘法方法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);
}
我知道我的透视投影矩阵按预期工作。