2013-02-17 78 views
2

我想用OpenGL ES 1.0驅動程序使用Irrlicht捕獲屏幕。爲什麼glReadPixels返回意想不到的顏色格式值?

這裏是我的代碼,用C++編寫

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

大部分Android設備上穩定運行。但MileStone與Android 2.2.3得到了意想不到的結果。我渴望RGBA色彩格式,而MileStone則返回BGRA色彩。

最後,我改變我的代碼

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

但MileStone的回報RGBA顏色。

我有問題,爲什麼紅色和藍色是意想不到的? 什麼是正確的原因?

回答

0

GL_BGRA是在OpenGL ES上的not supported。可能它適用於其他設備,因爲您隱式假定支持某種擴展。

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

編輯:掛上,我沒有正確地讀你的問題。所以MileStone交換GL_RGBAGL_BGRA的結果?無論擴展名如何,這都很奇怪。

+0

MileStone正確顯示屏幕上的所有內容,但當我調用glReadPixels()時,交換了藍色和紅色。 – Leo 2013-02-17 10:22:42

相關問題