【问题标题】:Android GLES2.0 : Basic matrix problemsAndroid GLES2.0:基本矩阵问题
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2017-06-01
    • 2019-11-06
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多