4.3. Asynchronous stepping

本文介绍了一种在游戏引擎中实现异步物理模拟的方法,通过使用特定的API来解耦物理模拟与渲染帧率,适用于帧率不稳定的情况。文章提供了具体的代码示例。

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

注意上面的例子,我们进行 物理和图形在平行的。这个是被推荐的方法,因为它使事情简单,和是最predictiable在CPU负载,特别是在多线程模拟,是最有效的方法模拟。

 

然而,能有原因(如非常变化的帧率,低的帧率或者运行物理在一个十分低的频率)减弱物理和帧率和运行物理异步的。为了做这个,一些函数在hkpWorld被提供。有hkpWorld::setFrameTimeMarker(), hkpWorld::isSimulationAtMarker()和hkpWorld::isSimulationAtPsi()。请注意用异步前进在你的游戏引擎是有挑战的,和只背推荐位高级用户。

这个代码你能设置世界异步的:

world->setFrameTimeMarker( frameDeltaTime );

world->advanceTime();
while ( !world->isSimulationAtMarker() ) 
{
    HK_ASSERT( 0x11179564, world->isSimulationAtPsi() );

    {
        // Interact from game to physics
    }

    world->stepDeltaTime( physicsDeltaTime );
    
    if (world->isSimulationAtPsi() )
    {
        // Interact with physics: physics data to game data
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值