簡體   English   中英

為什么glReadPixels返回意外的顏色格式值?

[英]Why glReadPixels return unexpected color format value?

我想使用Irrlicht和OpenGl ES 1.0 Driver捕獲屏幕。

這是我用c ++編寫的代碼

glReadPixels(0, 0, 200, 200, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

大多數Android設備運行良好。 但是Android 2.2.3的MileStone得到了意想不到的結果。我希望RGBA顏色格式,而MileStone返回BGRA顏色。

最后,我改變了我的代碼

glReadPixels(0, 0, 200, 200, GL_BGRA, GL_UNSIGNED_BYTE, pixels);

但是MileStone會返回RGBA顏色。

我有疑問為什么紅色和藍色出乎意料? 原因是什么?

OpenGL ES 不支持 GL_BGRA 可能它適用於其他設備,因為您隱含地假設支持某些擴展。

我希望OpenGL在這種情況下設置GL_INVALID_ENUM錯誤代碼。 你檢查過了嗎?

編輯:堅持,我沒有正確閱讀你的問題。 那么MileStone是否正在交換GL_RGBAGL_BGRA的結果? 無論擴展如何,這都很奇怪。

如果你要做的是創建一個位圖。 只需使用bmp.copyPixelsFromBuffer(...)代替bmp.setPixels(...)

從文檔位圖

緩沖區中的數據不會以任何方式更改(與setPixels()不同,setPixels()從未預設的32位轉換為位圖的本機格式。假設源緩沖區中的像素位於位圖的顏色空間中。

暫無
暫無

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

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