以下代码不将数据写入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应用程序,因此视图转换非常简单。

glDrawPixels(GetBufferWidth(), GetBufferHeight(), GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, m_PixelBuffer);


我可以提供的更多信息,请询问。我几乎是OpenGL和Mac newb,所以不知道我是否提供了足够的信息。

最佳答案

尽管我不确定这次是否是您的问题,但我始终对Intel的OpenGL实现有疑问。我认为您遇到了一些字节顺序问题。请阅读并随意尝试不同的包装和颜色顺序常数。

http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_25.html

我知道这是OSX指南,您可能会在其他站点上的其他平台上找到类似的OpenGL文章。这应该适用。

关于macos - 是什么可以阻止OpenGL glDrawPixels在某些视频卡上工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25646/

10-09 08:21