C 模拟屏幕
有没有办法用C语言制作电影院(或任何类型的)显示器C 模拟屏幕,c,C,有没有办法用C语言制作电影院(或任何类型的)显示器 我看过一些代码,但几乎没有文档。实现IOFramebuffer,如EWFrameBuffer等,这是创建图形驱动程序的方法。在不同的版本中有一点破损,但是通过一些尝试和错误,可以让事情很好地工作,包括视网膜分辨率。硬件加速是独立的: 如果您的驱动程序提供了与kext一起实现的CFPlugin捆绑包,则较旧版本的OSX使用了IOGraphicsAcceleratorInterface进行2D加速 我还没有在约塞米蒂找到答案;它似乎没有使用二维加速
我看过一些代码,但几乎没有文档。实现IOFramebuffer,如EWFrameBuffer等,这是创建图形驱动程序的方法。在不同的版本中有一点破损,但是通过一些尝试和错误,可以让事情很好地工作,包括视网膜分辨率。硬件加速是独立的: 如果您的驱动程序提供了与kext一起实现的CFPlugin捆绑包,则较旧版本的OSX使用了
IOGraphicsAcceleratorInterface
进行2D加速
我还没有在约塞米蒂找到答案;它似乎没有使用二维加速度。更糟糕的是,Yosemite上的软件渲染性能也比以前的版本差得多。我鼓励任何受此影响的人(无头MacMini、虚拟机中的OSX、虚拟显示器等)向苹果公司提交雷达文件。我已经这样做了,但抱怨的人越多,他们就越有可能对此采取行动
3D加速(OpenGL)API在所有版本上都是私有的。我不知道有任何第三方实现它们,开源或其他,除非你把Intel/AMD/nVidia GPU驱动程序算在内,它似乎是由苹果和相关公司合作开发的
更新:事实证明,Yosemite的Windows服务器将帧速率限制在8fps左右,除非您的IOFramebuffer驱动程序正确实现垂直空白中断。因此,如果您的驱动程序还没有这样做,请实现方法
registerForInterruptType()
,unregisterInterrupt
和setInterruptState
使用中断类型kiofbblinterrupttype
,并在每次发出完整映像时生成回调。详细信息将取决于您的设备(或缺少设备)。这并不能解决硬件加速和渲染问题,但至少可以在一定程度上提高性能(以更高的CPU负载为代价)。您需要模拟大于等于150dpi的显示器(因此像素除以报告的物理尺寸),您需要在相关显示模式上设置kDisplayModeValidForHiResFlag
标志。我还必须提供一个有效的EDID或系统首选项,以便显示会出现故障,但这是在Mountain Lion上,所以他们可能已经解决了这个问题。