2016-08-29 28 views
0

我在寫gles2應用程序,它可以在除Galaxy Note之外的所有設備上正常工作。 顏色似乎不RGBA,而是某種ABGR的(更像ABGA) blue buttons drawn yellow, black titles are redAndroid平板電腦的小端顏色格式錯誤

藍色按鈕繪製黃色,黑色標題是紅色的(對不起,張貼照片,但截圖都顯示正確的顏色,這是奇怪)

我使用離屏緩衝區來繪製所有內容,然後在屏幕上繪製此緩衝區的圖像。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0) 

這是我如何使用texImage2d紋理。

我已經寫了一些測試應用程序和顯示的內容截圖: enter image description here

,這是它的外觀在現實生活中 enter image description here

+0

你到底在問什麼? – Sergio

回答

1

檢查this answer

尤其是,如果您使用GL_UNSIGNED_BYTE,您似乎會失去耐力。如果你正在做的是在一個int中存儲4個字節,那麼你應該使用GL_UNSIGNED_INT_8_8_8_8來代替。然後它會知道按照何種順序期望他們在那個平臺上。

+0

謝謝,但不幸的是,沒有UNSIGNED_INT_8_8_8。但它有GL_UNSIGNED_SHORT_4_4_4_4。我應該用它來代替嗎? (和,ofc,將我的數據更改爲打包的短) – FertoVordalastr

+0

您在'UNSIGNED_INT_8_8_8'中缺少_8,應該有4個。也許這解釋了爲什麼你沒有找到它? –

+0

no no ...只是忘了一個,正在寫...在OpenGL中有8_8_8_,但根據khronos manulas「指定紋理數據的數據類型,接受以下符號值:GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4,和GL_UNSIGNED_SHORT_5_5_5_1「。此外,似乎有可能將GL_BGRA設置爲gles 3.0中的格式,但我使用的是2.0。所以我的說法是使用short而不是int,並嘗試使用4_4_4_4。希望它能起作用。 – FertoVordalastr