2011-09-07 61 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代碼,推出自己的代碼並嘗試每個提供的配置,無論它是否適用於創建上下文。