我知道归一化坐标应该是-1(左)和+1(右)和-1(底部)和+1(顶部)
像这样:
但是在应用这个之后:
从我的 onSurfaceChanged 方法
GLES20.glViewport(0, 0, width, height);
float ratio = (float) width / height;
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
//The above line can be replaced with:
//Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
//But I get the same results with either frustumM or otrhoM
这在我的 onDrawFrame 方法中
Matrix.setLookAtM(mVMatrix, 0, 0, 0, 3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);
(然后,我将 mMVPMatrix 传递到我的自定义类的 draw 方法中,在该方法中它被旋转和翻译)。
但是,我的坐标似乎发生了变化——大致是这样的:
如您所见,x 坐标有所改变,-1 和 +1 不再是屏幕的边缘(在我目前使用的设备上,外边缘变为 -1.7 和 +1.7)
Y 坐标保持不变。
如果有人能指出我哪里出错了,将不胜感激?我需要它应该是-1到+1。
谢谢