我想要为我的GUI渲染使用正射投影。当我使用我的常规变换矩阵绘制网格时,我得到了我期望的结果,但是当我使用正交投影时,我什么也得不到。我的透视投影也很好。我的正矩阵:OpenGL:正投影
public Matrix4f initOrthographic(float left, float right, float bottom, float top, float near, float far)
{
m[0][0] = 2.0f/(right - left); m[0][1] = 0; m[0][2] = 0; m[0][3] = (left + right)/(left - right);
m[1][0] = 0; m[1][1] = 2.0f/(top - bottom); m[1][2] = 0; m[1][3] = (bottom + top)/(bottom - top);
m[2][0] = 0; m[2][1] = 0; m[2][2] = 2.0f/(near - far); m[2][3] = (far + near)/(far - near);
m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1;
return this;
}
我不能为我的生活找出什么是错的。我将这个矩阵乘以正则变换,然后将该矩阵乘以着色器中的顶点位置。有任何想法吗?如果需要,我可以发布更多的代码/信息。
我想我只是发现了这个问题。我在顶部0和底部720,当我把这些值翻到720顶部和0底部它工作得很好。唯一的是我想左上角是(0,0)。有没有什么办法可以做到这一点,或者我坚持左下角是(0,0)?
看起来您的矩阵按行排列,而列主矩阵通常用于OpenGL。 –
我所有的其他矩阵都是以这种方式完成的,它们工作得很好。对不起,如果我不完全理解,我不知道我在做矩阵时做了什么。 – redonkulasman
你有没有考虑检查你的视口设置? –