Android GLES2.0:基本矩阵问题

时间:2016-03-01 17:49:22

标签: android matrix opengl-es-2.0

我从Android(Java)上的OpenGL ES开始; 我正在学习本教程:http://developer.android.com/training/graphics/opengl/projection.html

事情基本顺利,除了我在桌面OpenGL(我使用GLM而不是java / android框架)时没有矩阵乘法的问题 当我做投影* view * vec4(.. coords ..)时,我的投影+视图矩阵无法正常工作 我的几何体显示的唯一方法是乘以右: vec4(...)* MVP,其中MVP是Projection * View。 它应该不起作用(据我所知)但是......确实如此。至少一点点。我通过这种方式得到了大量的剪辑问题,但它仍然比没有更好:D

我的问题与此类似(同一个教程,但看起来已更新):Android OpenGL weirdness with the setLookAtM method

但看起来我现在遇到了相反的问题。而且我已经尝试了我想象的每一个组合来解决这个问题(在GLSL中转换MVP,通过投影加倍视图而不是相反,等等。)

这是我的代码

 //GLSL :
 gl_Position =  vec4(vPosition, 1.0) * MVP;

MVP是mMVPMatrix,定义为......

 Matrix.setLookAtM(mCameraMatrix, 0, 8, 8, -8, 0f, 0f, 0f, 0.0f, 1.0f, 0.0f);
 Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mCameraMatrix, 0);

投影是

float ratio = (float) width / height;

android.opengl.Matrix.frustumM(mProjectionMatrix, 0, -ratio, ratio, -1, 1, 3, 7);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题解决了:我只需要在计算它之前将我的MVP矩阵设置为Identity,并且每一帧