D3D 11高分辨率定时器

本文介绍了如何使用D3D11创建一个高分辨率的定时器,确保场景中的物体根据时间而非帧率进行更新。通过QueryPerformanceCounter()和QueryPerformanceFrequency()函数,实现了帧率检测和游戏定时器,保证物体旋转速度的一致性,不受帧率影响。此外,还详细讲解了定时器相关函数的实现和在UpdateScene()函数中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章,使用三个函数方法来学习如何制作一个高分辨率的定时器,用于确保场景中的每个运动物体的速度值基于时间进行更新。这意味着无论我们的帧率是多少,一个物体在场景中移动每秒会走过同样的距离,物体所移动的距离或者它所旋转的多少都是基于时间的,而不是fps。

这儿会学会如何使用方法QueryPerformanceCounter()和QueryPerformanceTimer()来实现高分辨率的游戏定时器,用于发现帧率,并使用上一章节的函数来讲它们显示在屏幕上。我们还会使用该定时器来找到它每帧花费的时间,并基于花费的每帧时间来更新立方体的旋转。这将会让立方体以同一个速度流畅地保持旋转,无论帧率是多少都是如此。


全局声明:

以下是用于保持一些全局信息的变量,比如帧率fps以及计数器起点。

double countsPerSecond = 0.0;
__int64 CounterStart = 0;

int frameCount = 0;
int fps = 0;

__int64 frameTimeOld = 0;
double frameTime;

新添加的函数

四个函数原型。第一个是UpdateScene()函数的更新版本。会传入渲染帧所花费的时间(秒),所以我们能够基于时间而不仅仅是fps来更新场景了。下一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值