OpenGL ES problem with PowerVR SGX GPU



我有一个OpenGL Live壁纸,在除了PowerVR SGX系列的所有手机上都能很好地工作。这包括几乎所有的三星手机和摩托罗拉Droid系列。PowerVR GPU手机的壁纸就是黑屏。一个星期以来,我一直绞尽脑汁想把这个问题解决出来,但始终没有成功。

不同gpu之间的一个区别是它们的纹理压缩。我在这方面所做的一些事情是,我把纹理图像更改为256x256的正方形。将它从8位改为16位rgba,甚至尝试索引。

我有一个PowerVR和Adreno可用的所有扩展的列表。似乎在可用的扩展中有相当多的差异,但我不知道什么函数与什么扩展(尽管我可以稍微猜测)。下面是我使用的函数列表:

  • glLightfv
  • glMaterialfv
  • glDepthFunc
  • glEnableClientState
  • glViewport
  • glMatrixMode
  • glLoadIdentity
  • gluPerspective
  • glclearcolor
  • glclear
  • glTranslatef
  • glRotatef
  • glVertexPointer
  • glTexCoordPointer
  • glColor4f
  • glNormal3f
  • glDrawArrays
  • glTexParamterx

我正在使用Robert Green的GlWallPaperService,并在尝试在设备上绘制纹理三角形失败时尝试了此解决方案,但模拟器工作。为什么?. 有人知道为什么PowerVR芯片让我这么难受吗?我该怎么做?

移除EGL10。EGL_RED_SIZE EGL10。EGL_GREEN_SIZE和EGL10。EGL_BLUE_SIZE,但留下EGL10。EGL_DEPTH_SIZE EGL10。eglChooseConfig中的EGL_NONE有效。我认为PowerVR芯片处理RGB的方式使定义RGB成为一个问题。

这可能对你没有帮助,但我注意到:

不同gpu之间的一个区别是它们的纹理压缩。我在这方面所做的一些事情是,我把纹理图像更改为256x256的正方形。将它从8位改为16位rgba,甚至尝试索引。

据我所知,目前没有硬件支持索引纹理。此外,要使用纹理压缩,您需要针对设备特别支持的压缩纹理格式(这通常需要在主机/开发平台上运行压缩器)。SGX支持PVRTC和ETC,但是否启用取决于平台

根据我自己使用这个GPU的经验,它将提供GLES配置,一旦应用将无法工作(即不会创建GLES上下文)。解决方法是查看GLSurfaceView代码,推出您自己的并尝试每个提供的配置,看它是否适用于创建上下文。

相关内容

  • 没有找到相关文章

最新更新