Macos 在OSX中,OpenGL全屏显示时是否可以实现稳定的60hz帧速率?
我正在尝试编写一个应用程序,以全屏显示视频,需要尽可能平滑 我的OpenGL代码与垂直刷新同步同步,大部分时间播放流畅,cpu使用率低 然而,有时会有轻微的口吃 为了简化测试并消除潜在的延迟源,我编写了一个简单的渲染循环,它只创建一个全屏,清除帧并交换缓冲区 我对缓冲区交换时间进行了计时(使用mach_absolute_time()),并打印了超出15到18毫秒范围的时间 下面显示了一个运行示例(报告时间以秒为单位,帧时间以毫秒为单位): 测试时,没有其他应用程序从XCode运行appart。 测试在运行OS X 10.7.5的Macbook Pro 5,1上运行Macos 在OSX中,OpenGL全屏显示时是否可以实现稳定的60hz帧速率?,macos,opengl,vsync,Macos,Opengl,Vsync,我正在尝试编写一个应用程序,以全屏显示视频,需要尽可能平滑 我的OpenGL代码与垂直刷新同步同步,大部分时间播放流畅,cpu使用率低 然而,有时会有轻微的口吃 为了简化测试并消除潜在的延迟源,我编写了一个简单的渲染循环,它只创建一个全屏,清除帧并交换缓冲区 我对缓冲区交换时间进行了计时(使用mach_absolute_time()),并打印了超出15到18毫秒范围的时间 下面显示了一个运行示例(报告时间以秒为单位,帧时间以毫秒为单位): 测试时,没有其他应用程序从XCode运行appart。
切换图形(此笔记本电脑有英伟达9600和9400),从外部监视器或笔记本电脑屏幕上运行没有差别。 为了排除底层API之间的差异,我使用SDL、Glfw、Cinder和SFML等图形框架尝试了相同的代码。最后,我还尝试了苹果OpenGL全屏示例的计时。尽管Glfw似乎更稳定一些,但它们的行为或多或少都是相同的
使用SCHED_FIFO策略将绘图线程优先级增加到最大值似乎可以稍微改善一些情况,但不会有多大改善 我开始认为,不可能从OpenGL获得稳定的60hz帧速率,或者如果是这样的话,就没有适当的文档记录 有没有人能够在OSX中为全屏OpenGL应用程序获得稳定的60hz显示速率? 怎么做 编辑:我注意到从终端运行测试极大地改善了计时。从XCode运行会产生更多的波动,我用这些数字得出我的结论。无论如何,在同一台机器上,在Windows7下,我似乎仍然可以获得更稳定的行为。但目前的波动在允许的范围内“我的OpenGL代码与垂直刷新同步”您是如何实现这一点的?什么分辨率和什么卡处于活动状态?您好,正如我在上面所写的,我已尝试在9400和9600图形卡中运行代码,此MBP型号允许您选择要使用的gpu,以在性能和能效之间取得平衡。两张牌的行为相同。我试过笔记本电脑的本机分辨率(1440 x 900)和外部监视器本机分辨率(1920 x 1200)。分辨率不是问题,因为当我关闭vsync时,fps计数器达到1000 fps以上的数字。所谓同步,我的意思是缓冲区交换上的主线程阻塞等待垂直同步。1。在窗口上运行此测试会大大增加计时差异。全屏幕运行更流畅。2.对3.据我所知,mach_absolute_time()是OSX(和iOS)中分辨率最高、精度最高的计时器。
at time:0.903594 -> frame time:06.943 ms
at time:1.941287 -> frame time:20.801 ms
at time:1.956124 -> frame time:14.725 ms
at time:1.969766 -> frame time:13.533 ms
at time:4.059608 -> frame time:23.808 ms
at time:4.068953 -> frame time:09.255 ms
at time:6.090000 -> frame time:55.086 ms
at time:6.090681 -> frame time:00.210 ms
at time:6.101372 -> frame time:10.659 ms
at time:9.684669 -> frame time:18.014 ms
at time:15.032867 -> frame time:18.463 ms
at time:15.047580 -> frame time:14.618 ms
at time:17.028749 -> frame time:65.096 ms
at time:17.028962 -> frame time:00.108 ms
at time:17.037022 -> frame time:08.034 ms
at time:17.049193 -> frame time:12.069 ms
at time:17.063416 -> frame time:14.130 ms