我有一个 OpenGL 动态壁纸,可以在除 PowerVR SGX 系列以外的所有手机上正常运行。这包括几乎所有三星手机和摩托罗拉 Droid 系列。壁纸只不过是 PowerVR GPU 手机上的黑屏。我已经绞尽脑汁一周试图解决这个问题,但没有成功。
不同 GPU 之间的一个区别是它们的纹理压缩。我在这方面所做的一些事情是将纹理图像更改为 256x256 的正方形。将其从 8 位更改为 16 位 rgba,甚至尝试建立索引。
我有 PowerVR 可用的所有扩展以及 Adreno 可用的扩展的列表。似乎可用的扩展有很多差异,但我不知道哪些功能与哪些扩展相匹配(尽管我可以猜测)。以下是我使用的函数列表:
- glLightfv
- glMaterialfv
- glDepthFunc
- glEnableClientState
- glViewport
- glMatrixMode
- glLoadIdentity
- glu透视
- glclearcolor
- glclear
- gl翻译
- glRotatef
- glVertexPointer
- glTexCoordPointer
- glColor4f
- glNormal3f
- glDrawArrays
- glTexParamterx
我正在使用 Robert Green 的 GlWallPaperService,并已在 Trying to draw textured triangles on device fails, but the emulator works. Why? 尝试过此解决方案。 。有谁知道为什么 PowerVR 芯片给我带来这么大的困难以及我能做些什么吗?
最佳答案
删除 EGL10.EGL_RED_SIZE、EGL10.EGL_GREEN_SIZE 和 EGL10.EGL_BLUE_SIZE 但在eglChooseConfig 中保留 EGL10.EGL_DEPTH_SIZE、EGL10.EGL_NONE 有效。我认为 PowerVR 芯片处理 RGB 的方式使得定义它们成为一个问题。
关于android - PowerVR SGX GPU 的 OpenGL ES 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341146/