在OS X 10.4+上读取/写入任意字节到VRAM

时间:2010-12-15 17:38:00

标签: cocoa macos quartz-graphics low-level

Hello Cocoa开发人员,

我想与这里的一些专家核实,看看他们是否能够帮助澄清文档缺乏的领域。现在我们有一个方法,通过获取显示器的基地址并写入/读取从该地址开始的字节模式来测试VRAM。这提供了这样的效果:显示器上的每个像素连续地设置为特定颜色,然后将其读回以确保它与预期的相同。

原始实现使用quickdraw函数来获取此地址,我的任务是将其更新为10.4+。我正在使用CGDisplayCaptureWithOptions(kCGDirectMainDisplay, kCGCaptureNoFill),然后通过调用CGDisplayBaseAddress(kCGDirectMainDisplay)获取基地址。这似乎符合我的预期,实现与以前的版本一样有效。

我唯一要问的问题是,这是真的写入VRAM还是只是RAM中的显示缓冲区?或者我应该使用像OpenGL这样的东西吗?谢谢大家的任何指示和/或建议。如果您认为有必要,我可以提供代码示例。

1 个答案:

答案 0 :(得分:0)

来自Apple的文档:

CGDisplayBaseAddress(),在Mac OS X 10.6中弃用

“返回在线显示的帧缓冲内存中的基址。不应使用原始帧缓冲区绘制到屏幕,而应使用支持的绘图引擎,如Quartz或OpenGL。”

这听起来不错。您应该使用OpenGL进行绘图和测试(我想,使用glReadPixels())。