首先,显卡驱动并不知道当前的帧率,也不需要知道。只要一帧数据准备好了就产生一个 v sync 就行了(具体机制不清楚,不一定是 v sync。也可能是其他硬件信号)。任意两个 v sync 之间的间隔都不需要相同。对于显示器来说见到 v sync 就刷新,没有就等待。根本就没有一个固定刷新率。
显卡驱动不需要 DX 给任何控制。只要 DX 能告诉显卡驱动一帧图像准备好了就行。
DirectX 我不熟,我估计大概的流程也类似一个 BEGIN() END() 块(或者其他类似的函数)。 在 END() 函数里 DX 会告诉显卡驱动我这帧画完了,你可以拿走了。
【 在 o5o 的大作中提到: 】
: 假如游戏前10秒是60hz的速度渲染,后10秒是30hz的渲染,那显卡驱动是怎么知道某个帧开始,要从60hz改成30hz输出的?是freeaync的显卡驱动会自动去变不需要dx控制么?只看数据有数据来显示就产生v sync?
: 如果是固定刷新率的显卡,是固定输出vsync,这个dx在初始化时候就是可以设定的
:
--
FROM 120.244.156.*