[英]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_RGBA
和GL_BGRA
的結果? 無論擴展如何,這都很奇怪。
如果你要做的是創建一個位圖。 只需使用bmp.copyPixelsFromBuffer(...)代替bmp.setPixels(...)
從文檔位圖 :
緩沖區中的數據不會以任何方式更改(與setPixels()不同,setPixels()從未預設的32位轉換為位圖的本機格式。假設源緩沖區中的像素位於位圖的顏色空間中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.