游戏在某些场景中运行似乎太快,我想限制FPS为30。我使用纯cpp D3D中。我觉得WP8 不提供SetWaitableTimer(我在桌面使用限制FPS)
我已经找到了sleep方法
SleepConditionVariableCS在WP8这里是sleep的代码
struct WaitTimeData
{
CONDITION_VARIABLE conditionVariable;
CRITICAL_SECTION criticalSection;
WaitTimeData()
{
InitializeConditionVariable(&conditionVariable);
memset(&criticalSection , 0 , sizeof(CRITICAL_SECTION));
//InitializeCriticalSection(&_CriticalSection); WP8没有这个函数
criticalSection.DebugInfo = (PRTL_CRITICAL_SECTION_DEBUG)-1;
criticalSection.LockCount = -1;
}
};
int WPSleep(unsigned int ms)
{
static WaitTimeData s_wtd;
SleepConditionVariableCS(
&s_wtd.conditionVariable,
&s_wtd.criticalSection,
ms
);
if (GetLastError() == ERROR_TIMEOUT)
{
SetLastError(0);
}
return 0;
}
想问下各位牛人们,在WP8 中,如何实现限制帧数为30的功能,或者如何写一个和 SetWaitableTimer类似的方法,能提供大概思路或源码就更好了,在此感谢。
------解决方案--------------------
创建DX设备时有垂直同步参数
------解决方案--------------------
present的参数