Java OpenGL ES 2.0-网格被Y轴和Z轴扭曲
我正在尝试显示简单网格,但遇到以下问题: 当我尝试平移网格或指定大多数透视矩阵参数(使用matrix.trustumm方法)时,我的网格会变形。它按Z轴收缩,按Y轴拉伸 我的相机矩阵代码:Java OpenGL ES 2.0-网格被Y轴和Z轴扭曲,java,android,opengl-es-2.0,Java,Android,Opengl Es 2.0,我正在尝试显示简单网格,但遇到以下问题: 当我尝试平移网格或指定大多数透视矩阵参数(使用matrix.trustumm方法)时,我的网格会变形。它按Z轴收缩,按Y轴拉伸 我的相机矩阵代码: Matrix.setLookAtM(mViewMatrix, 0, 0, 0,-3, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); 我的投影矩阵代码(从此处粘贴的副本:) 我的顶点着色器代码: private static String vertexShaderCode =
Matrix.setLookAtM(mViewMatrix, 0, 0, 0,-3, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
我的投影矩阵代码(从此处粘贴的副本:)
我的顶点着色器代码:
private static String vertexShaderCode =
"uniform mat4 uMVPMatrix;" +
"attribute vec4 aPosition;" +
"attribute vec2 aTextureCoordIn;"+
"varying vec2 vTextureCoordOut;"+
"void main() {"+
" vTextureCoordOut = aTextureCoordIn;"+
" gl_Position = aPosition * uMVPMatrix;" +
"}";
使用以下代码,使用0.2乘数缩放网格:
mModelMatrix = new float[16];
Matrix.setIdentityM(mModelMatrix, 0);
Matrix.rotateM(mModelMatrix, 0, rotateX, 1, 0, 0);
Matrix.rotateM(mModelMatrix, 0, rotateY, 0, 1, 0);
Matrix.rotateM(mModelMatrix, 0, rotateZ, 0, 0, 1);
Matrix.scaleM(mModelMatrix, 0, scaleX, scaleY, scaleZ);
Matrix.translateM(mModelMatrix, 0, translateX, translateY, translateZ);
和mvp矩阵乘以:
float[] mMVPMatrix = new float[16];
Matrix.multiplyMM(mMVPMatrix, 0, mViewMatrix, 0, mModelMatrix, 0);
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0);
我尝试了以下主题的解决方案:,,但没有成功
截图:
我还发现,当我使用以下投影矩阵且不平移网格时,它看起来是正确的:
平截头体(mProjMatrix,0,-比率,比率,-1,1,2,6);
屏幕:
我花了几个小时试图找到解决办法,但没有任何效果。我确信我的矩阵有问题,但我不知道如何解决它
任何想法都将受到高度赞赏。好吧,android教程存在巨大的混乱。。矩阵相乘的方式决定了顶点着色器主函数中的位置相乘的方式相同,因此: 而不是:
"gl_Position = aPosition * uMVPMatrix;" +
做:
"gl_Position = aPosition * uMVPMatrix;" +
"gl_Position = uMVPMatrix * aPosition;" +