Hello Cocoa开发人员,
我想与这里的一些专家核实,看看他们是否能够帮助澄清文档缺乏的领域。现在我们有一个方法,通过获取显示器的基地址并写入/读取从该地址开始的字节模式来测试VRAM。这提供了这样的效果:显示器上的每个像素连续地设置为特定颜色,然后将其读回以确保它与预期的相同。
原始实现使用quickdraw函数来获取此地址,我的任务是将其更新为10.4+。我正在使用CGDisplayCaptureWithOptions(kCGDirectMainDisplay, kCGCaptureNoFill)
,然后通过调用CGDisplayBaseAddress(kCGDirectMainDisplay)
获取基地址。这似乎符合我的预期,实现与以前的版本一样有效。
我唯一要问的问题是,这是真的写入VRAM还是只是RAM中的显示缓冲区?或者我应该使用像OpenGL这样的东西吗?谢谢大家的任何指示和/或建议。如果您认为有必要,我可以提供代码示例。
答案 0 :(得分:0)
来自Apple的文档:
CGDisplayBaseAddress(),在Mac OS X 10.6中弃用
“返回在线显示的帧缓冲内存中的基址。不应使用原始帧缓冲区绘制到屏幕,而应使用支持的绘图引擎,如Quartz或OpenGL。”
这听起来不错。您应该使用OpenGL进行绘图和测试(我想,使用glReadPixels()
)。