Android OpenGL ES 不光栅化 - 矩阵乘法切换

标签 android opengl-es mali

我刚买了一个新的 SGS3(I9300 - 不是 LTE)并希望继续开发 OpenGL ES (2) 应用程序。 不幸的是,当我编译它时,我什么也没看到。

我收到以下 LogCat 错误消息:

D/libEGL(6890): loaded /system/lib/egl/libEGL_mali.so
D/libEGL(6890): loaded /system/lib/egl/libGLESv1_CM_mali.so
D/libEGL(6890): loaded /system/lib/egl/libGLESv2_mali.so
E/(6890): Device driver API match
E/(6890): Device driver API version: 23
E/(6890): User space API version: 23 
E/(6890): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Wed Oct  9 21:05:57 KST 2013** 
D/OpenGLRenderer(6890): Enabling debug mode 0

我还安装了一个自定义 rom (cyanogenmod 11 - snapshot M4),但我遇到了同样的问题。

当我启动应用程序时,我看到没有任何顶点光栅化的空白屏幕。清晰的颜色到目前为止有效,因此 OpenGL 的基本功能正在运行。

enter image description here

可以肯定的是,我使用 Google Developers 页面的基本教程 和 GLES 1 和 GLES 2 进行了尝试。两者都不起作用!以下是屏幕截图:

http://developer.android.com/training/graphics/opengl/index.html

该项目本身在我的旧 Galaxy S1(也在 Cyanogenmod)上运行良好,但在我的 SGS3 上除了空白屏幕外没有显示任何其他内容。

Mali-400 MP4 图形驱动程序/系统是否可能以不同方式解释 GL 命令?是否有与我的 SGS1 中的 Hummingbird GPU 不同的调用方式?

有人知道该怎么做吗?这是我手机或 eclipse 的问题吗?或者这是正常的——只是我缺乏理解?我该如何解决这个问题?

------ 编辑:找到解决方案 ------

好的,我发现了错误。谷歌文档显示了顶点着色器中矩阵的“错误”乘法:

uniform mat4 uMVPMatrix;
attribute vec4 vPosition;
void main() {
   gl_Position = uMVPMatrix * vPosition;
}

这对我的旧 Galaxy S1 来说似乎不是问题,但不知何故 S3(或 Mali GPU)对此很挑剔。我将乘法顺序更改为:

uniform mat4 uMVPMatrix;
attribute vec4 vPosition;
void main() {
   gl_Position = vPosition * uMVPMatrix;
}

它有效(也在 S1 上)。仍然不确定为什么 S1 在两个版本上都能正常工作,但这解决了问题。

感谢您的帮助!

最佳答案

就在我的脑海里,你检查过投影设置了吗?可能正在绘制这些形状,只是不在您期望的位置。

此外,检查着色器加载步骤的返回值。如果存在编译问题,您将获得着色器程序的无效句柄。

关于Android OpenGL ES 不光栅化 - 矩阵乘法切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384272/

相关文章:

android - 如何测试 fragment View 是否对用户可见?

java - 验证点是否在 3D 空间中的圆锥体内

c++ - OpenGL ES 2.0 2D 投影矩阵,将 GLfloat (*)[4] 转换为 GLfloat 时出错

ios - MKMapView 与 iOS 8 崩溃

java - Android:使用AudioTrack和Socket手动高效地流音频

Java:从多部分 POST 请求获取视频文件

gpu - Mali-400MP GPU 的输出不对称且不准确

ffmpeg - 视频显示/解码/编码程序如何支持 ARM GPU?

android - 优化重 fragment 着色器的性能

android - 在alarmmanager中单击通知后打开 Activity 并广播Kotlin