【发布时间】:2016-03-01 17:49:21
【问题描述】:
我开始在 Android (Java) 上使用 OpenGL ES; 我正在关注本教程:http://developer.android.com/training/graphics/opengl/projection.html
基本上一切顺利,除了我在桌面 OpenGL 上没有的矩阵乘法问题(我使用 GLM 而不是 java/android 框架) 当我进行投影 * 视图 * 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);
有什么想法吗?
【问题讨论】:
-
看起来不起作用(好吧,用你告诉我的乘法和乘法 vec4 * MVP,我得到一个可怕的结果,而不是一个几乎正确的结果,而使用 MVP * vec4,我什么也得不到...)顺便说一句,文档所说的看起来像是在 OpenGL 中:如果你这样做:Projection * View * vec4,投影最后应用,但是是 LHS。这就是我理解它的方式
-
也许你是对的。尽管如此,它并没有解决我的问题。好奇怪
-
忘记我说的一切,你是对的......我从 Android SDK 下载了一个示例,他们按照你的使用方式使用它。
-
确实是不错的资源,但 AFAIK,我遵循的步骤几乎完全相同......我找不到我所做的不同
标签: android matrix opengl-es-2.0