以下代码不向 Intel 集成显卡(例如 MacBook)上的后台缓冲区写入数据。在 ATI 卡上,例如在 iMac 中,它会绘制到后台缓冲区。宽度和高度正确(以及 800x600 缓冲区)并且 m_PixelBuffer 正确填充了 0xAA00AA00。
到目前为止,我最好的猜测是需要设置 glWindowPos 存在一些问题。我目前没有设置它(或光栅位置),当我得到 GL_CURRENT_RASTER_POSITION 时,我注意到 ATI 卡上的默认值是 0,0,0,0 而 Intel 是 0,0,0,1。当我将 ATI 卡上的光栅 pos 设置为 0,0,0,1 时,我得到与 Intel 卡相同的结果,没有任何内容被绘制到后台缓冲区。我缺少一些转换状态吗?这是一个 2D 应用程序,因此视图变换是一个非常简单的 glOrtho。
glDrawPixels(GetBufferWidth(), GetBufferHeight(), GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, m_PixelBuffer);
我可以提供更多信息,请询问。我几乎是 OpenGL 和 Mac 新手,所以我不知道我是否提供了足够的信息。