按照android OpenGL ES 教程,我可以在屏幕上画一个正方形。
我想在屏幕上画第二个正方形,在最初的正方形旁边,所以我做了如下(只有两次):
Matrix.setLookAtM(mViewMatrix, 0, 0, 0, 3.0f, 0, 0, 0, 0, 1.0f, 0);
float[] modelMatrix = new float[16];
Matrix.setIdentityM(modelMatrix, 0);
Matrix.translateM(modelMatrix, 0, 2, 2, 0); //arbitrarily picking 2, the correctly drawn square uses 0's.
Matrix.multiplyMM(mMVPMatrix, 0, mViewMatrix, 0, modelMatrix, 0)
Matrix.multiplyMM(mMVPMatrix, 0, mMVPMatrix, 0, mProjMatrix, 0);
然后继续绘制它(链接到谷歌的代码)
尤其:
private final String vertexShaderCode =
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"void main() {" +
" gl_Position = vPosition * uMVPMatrix;" +
"}";
和
GLES20.glViewport(0, 0, width, height);
float ratio = (float) width / height;
Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
但是,我的第二个正方形是这样倾斜的:
为什么会这样?我怎样才能简单地在这个旁边画一个正方形,而不修改初始坐标?
我怀疑它与 Matrix.setLookAtM() 有关,并且投影正在重塑正方形。但是,我不确定如何解决此问题!