有没有办法在C中制作Cinema(或任何类型的)显示器?
我见过一些代码,但几乎没有文档。
答案 0 :(得分:5)
实现IOFramebuffer,就像EWFrameBuffer等一样,是创建图形驱动程序的方法。各种版本都有一些破损,但是可以通过一些试验和错误来使事情很好地工作,包括视网膜分辨率。硬件加速是分开的:
如果您的驱动程序提供了一个与您的kext一起实现的CFPlugin软件包,则旧版本的OSX使用IOGraphicsAcceleratorInterface
进行2D加速。
我还没有想到优胜美地;它似乎不使用2D加速。更糟糕的是,优胜美地的软件渲染性能也比以前的版本差得多。我鼓励任何受此影响的人(无头mac mini,VM中的OS X,虚拟显示器等)向Apple提交Radar。我已经这样做了,但是越多人抱怨,他们就越有可能对此采取行动。
3D加速(OpenGL)API在所有版本上都是私有的。我不知道有任何第三方实现它们,开源或其他,除非你算上Intel / AMD / nVidia GPU驱动程序,它们似乎是由Apple和相关公司合作开发的。
更新:事实证明,Yosemite的WindowServer将帧速率限制在大约8fps ,除非您的IOFramebuffer驱动程序正确实现垂直空白中断。因此,如果您的驱动程序尚未执行此操作,请实施方法registerForInterruptType()
,unregisterInterrupt
和setInterruptState
使用中断类型kIOFBVBLInterruptType
,并在每次完成发布时生成回调一个完整的图像。具体细节取决于您的设备(或缺少设备)。这并不能解决硬件加速和渲染毛刺问题,但它至少可以提高性能(以更高的CPU负载为代价)。