簡體   English   中英

Android:GLES 2.0打破三星S2?

[英]Android: GLES 2.0 broken on Samsung S2?

我有一些非常簡單的着色器代碼在S2上失敗,只有S2失敗。

precision highp float;
varying vec4 v_colour;
uniform mat4 proj_cam;
uniform mat4 trans;
attribute vec4 vp; //vertex xyz from buffer.
attribute vec4 vc; //vertex colour, from buffer. Standard 32bit value.
void main()
{
  v_colour = vc;
  gl_Position = proj_cam * (trans * vp);
};

precision mediump float;
varying vec4 v_colour;
void main()
{
    gl_FragColor = v_colour;
}

在S2上,這無法呈現任何輸出。 如果我刪除管道的顏色部分或刪除單獨的視圖和模型矩陣並將它們組合起來就可以了。 更糟糕的是,使用相同的着色器代碼只使用一個有效的矩陣,然后添加“uniform mat4 trans”; 但不要使用足以使渲染失敗的行。 GL輸出沒有錯誤。 我在Java中這樣做,我可以用C / C ++重新編寫它,看看它是否有效,但我認為不會。

此代碼適用於其他手機,包括我的舊2.2 ZT-180平板電腦!

我可以補充說,有些游戲在我的S2上嚴重失敗,其他游戲工作正常。

我已經編寫了GLES 2.0幾年了,這款手機讓我很難過。 我一直在大喊大叫! ;)

我終於發現了我的錯誤,我錯誤地使用了'glBindAttribLocation'。

在使用我多年來編寫的舊C / C ++ GLES 2.0代碼作為參考時,我沒有注意到在鏈接着色器之前我一直在調用glBindAttribLocation。 必須在編譯之后但在鏈接之前完成。

在逐行瀏覽我的代碼並閱讀每個函數的文檔后,我發現了這一點。 只是去展示,即使是經驗豐富的編碼員也可以滑倒。 :)

本來不錯的。 如果GL問題出現錯誤,為什么它在我試過的其他手機上有效呢?.......

你檢查過你的AndroidManifest.xml嗎? 我遇到了類似的情況,並使用下面的聲明來修復它

<uses-feature android:glEsVersion="0x00020000"/>

請確保不是

android:glEsVersion="2" //Wrong

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM