我有一个 OpenGL 动态壁纸,可以在除 PowerVR SGX 系列之外的所有手机上正常工作。这包括几乎所有三星手机和摩托罗拉 Droid 系列。壁纸不过是 PowerVR GPU 手机上的黑屏。我已经绞尽脑汁想解决这个问题一个星期了,但没有运气。
不同 GPU 之间的一个区别是它们的纹理压缩。我在这方面所做的一些事情是将纹理图像更改为 256x256 的正方形。将其从 8 位更改为 16 位 rgba,甚至尝试索引。
我列出了 PowerVR 可用的所有扩展以及 Adreno 可用的扩展。可用扩展似乎有很多差异,但我不知道哪些功能与哪些扩展一起使用(尽管我可以猜测)。以下是我使用的函数列表:
- glLightfv
- glMaterilfv
- glDepthFunc
- glEnableClientState
- glViewport
- glMatrixMode
- glLoadIdentity
- 胶透视
- glclearcolor
- 清晰的
- glTranslatef
- glRotatef
- gl顶点指针
- glTexCoordPointer
- glColor4f
- glNormal3f
- glDrawArrays
- glTex 参数
我正在使用 Robert Green 的 GlWallPaperService 并在尝试在设备上绘制带纹理的三角形失败时尝试了此解决方案,但模拟器可以工作。为什么?. 有谁知道为什么 PowerVR 芯片让我如此艰难,我能做些什么?