以下代码不会将数据写入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新手,所以我不知道我是否提供了足够的信息。