我从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);
有什么想法吗?
答案 0 :(得分:0)
问题解决了:我只需要在计算它之前将我的MVP矩阵设置为Identity,并且每一帧