2012-09-03 409 views
3

我正在研究一款在很多Android設備(雷克薩斯7,SG ACe,HTC Desire ...)上運行良好的遊戲。但特別是對於SGS1,我無法比黑屏更好。 在對整個代碼進行了大量調查後,我認爲該問題位於我的着色器代碼中。編譯正常,鏈接,但我卻聽到不同的GPU(這裏http://www.jpct.net/forum2/index.php/topic,2833.15.html例如)與SGS1的黑色屏幕

這裏存在兼容年代shader代碼:

[VERTEX]

uniform mat4 uMVPMatrix; // Ortho matrix 
attribute vec2 vPosition; // Vertex position 
void main(){ 
    gl_Position = uMVPMatrix * vec4(vPosition, 0.0, 1.0); 
} 

[片段]

precision mediump float; 
uniform lowp vec4 CurColor; 
void main(){ 
    gl_FragColor = CurColor; 
} 

也許這件事顯然是錯誤的,即使它是非常基本的?先謝謝你。

回答

0

這裏有一些建議:

  • 試試,看看是否有任何的logcat錯誤
  • 看看glGetError()返回的東西從0
  • 更改鮮明的色彩不同,看是否仍然黑屏,如果它發生變化,那麼你的物體是不可見的

在你嘗試其中的一些後評論我。

+0

我嘗試了你的建議,並且:screen is all green。 glGetError()在我的手機(三星Ace:GT-S5830)中返回了我修正的許多錯誤,但沒有出現在SGS1上。這很奇怪! LogCat中沒有錯誤(如果需要,我可以發佈樣本)。任何其他想法? – Tcheg

+0

我已經嘗試了很多東西,並通過一個簡單的着色器將我的遊戲減少到了最低限度。屏幕總是空的!我想知道GLES20.glEnable(GLES20.GL_TEXTURE_2D)的紋理啓用:opengl es 2需要嗎?這條生產線能否使整個過程崩潰? – Tcheg

+0

不,這是必要的。當您更改清除顏色時,您的顏色是否會改變? – dragostis

1

我終於明白了。我有2個問題:

1)的PowerVR似乎不喜歡「lowp」限定符用於其它着色均勻

2),我不得不「vec4」的vPosition,雖然我只傳遞2個分量由頂點(X ,Y)。奇怪的是:爲什麼其他GPU可以處理這樣的錯誤?像mali(malideveloper.com/developer-resources/tools/...)提供的檢查器對於PowerVR來說是非常令人耳目一新的!