以下代碼不會將數據寫入Intel集成顯卡上的後臺緩衝區,例如,在MacBook上。在ATI卡上,例如在iMac中,它將繪製到後臺緩衝區。寬度和高度是正確的(並且800x600緩衝區),m_PixelBuffer正確填充0xAA00AA00。什麼能阻止OpenGL glDrawPixels在某些顯卡上工作?
到目前爲止,我的最佳猜測是,需要glWindowPos設置有些不妥之處。我目前沒有設置它(或柵格位置),當我得到GL_CURRENT_RASTER_POSITION時,我注意到ATI卡上的默認值是0,0,0,0,而Intel是0,0,0,1。當我將ATI卡上的光柵位置設置爲0,0,0,1時,我得到的結果與Intel卡相同,沒有任何東西繪製到後臺緩衝區。有一些變形狀態我錯過了嗎?這是一個2D應用程序,所以視圖變換是一個非常簡單的glOrtho。
glDrawPixels(GetBufferWidth(), GetBufferHeight(), GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, m_PixelBuffer);
更多信息我可以提供,請詢問。我幾乎是一個OpenGL和Mac新手,所以我不知道我是否提供了足夠的信息。