我正在尝试在屏幕上定位我的文本模型网格。使用以下代码,它以代码建议的方式绘制网格;将网格的左边绘制于屏幕中心。但是,我想将其定位于屏幕左侧边缘,这就是我卡住的地方。如果取消注释Matrix.translateM行,我认为位置现在将位于屏幕左侧,但似乎位置被缩放了(!?)。
我尝试了一些场景:
a.) 仅Matrix.scaleM(没有Matrix.translateM)= 网格的左侧位置为0.0f(屏幕中心),比例正确。
b.) 仅Matrix.TranslateM(没有Matrix.scaleM)= 网格的左侧位置在屏幕左侧正确地定位为-1.77f,但比例不正确。
c.) 先Matrix.TranslateM然后Matrix.scaleM,或先Matrix.scaleM然后Matrix.TranslateM = 比例正确,但位置不正确。看起来位置被缩放,并且非常接近中心而不是靠近屏幕左侧。
我正在使用OpenGL ES 2.0,在Android Studio编写Java程序。
屏幕边界(从Matrix.orthoM设置) left:-1.77,right:1.77(中心为0.0),top:-1.0,bottom:1.0(中心为0.0)
网格高度为1.0f,因此如果没有Matrix.scaleM,网格将占据整个屏幕高度。
我尝试了一些场景:
a.) 仅Matrix.scaleM(没有Matrix.translateM)= 网格的左侧位置为0.0f(屏幕中心),比例正确。
b.) 仅Matrix.TranslateM(没有Matrix.scaleM)= 网格的左侧位置在屏幕左侧正确地定位为-1.77f,但比例不正确。
c.) 先Matrix.TranslateM然后Matrix.scaleM,或先Matrix.scaleM然后Matrix.TranslateM = 比例正确,但位置不正确。看起来位置被缩放,并且非常接近中心而不是靠近屏幕左侧。
我正在使用OpenGL ES 2.0,在Android Studio编写Java程序。
屏幕边界(从Matrix.orthoM设置) left:-1.77,right:1.77(中心为0.0),top:-1.0,bottom:1.0(中心为0.0)
网格高度为1.0f,因此如果没有Matrix.scaleM,网格将占据整个屏幕高度。
float ratio = (float) 1920.0f / 1080.0f;
float scale = 64.0f / 1080.0f; // 64px height to projection matrix
Matrix.setIdentityM(modelMatrix, 0);
Matrix.scaleM(modelMatrix, 0, scale, scale, scale); // these two lines
//Matrix.translateM(modelMatrix, 0, -ratio, 0.0f, 0.0f); // these two lines
Matrix.setIdentityM(mMVPMatrix, 0);
Matrix.orthoM(mMVPMatrix, 0, -ratio, ratio, -1.0f, 1.0f, -1.0f, 1.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mMVPMatrix, 0, modelMatrix, 0);