2011-09-07 59 views
2

我有一个OpenGL动态壁纸,可以在除PowerVR SGX系列以外的所有手机上正常工作。这几乎包括所有三星手机和摩托罗拉Droid系列。该壁纸不过是PowerVR GPU手机上的黑屏。我一直试图解决这个问题,但一直没有运气。PowerVR SGX GPU的OpenGL ES问题

不同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,并尝试使用此解决方案在Trying to draw textured triangles on device fails, but the emulator works. Why?。有谁知道为什么PowerVR芯片给我这么难,我能做些什么呢?

回答

2

删除EGL10.EGL_RED_SIZE,EGL10.EGL_GREEN_SIZE和EGL10.EGL_BLUE_SIZE,但在eglChooseConfig中保留EGL10.EGL_DEPTH_SIZE,EGL10.EGL_NONE。我假定PowerVR芯片以一种能够将其定义为问题的方式处理RGB。

+0

我面临同样的问题与同样的服务。它会对电池或资源有任何性能影响吗? –

2

这可能不会帮助你,但我注意到:

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

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

0

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