为什么我用的这个游戏循环(基于Direct3D9)这么慢?

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:58:13
//游戏循环
while(TRUE){
tNow = GetTickCount();//取得系统当前时间
tInterval = tNow - tLastFrame;
//刷新前的事件处理
if( !m_listener->FrameStartEvent(tInterval){
break;
}
//刷新部分
m_d3dDevice->Clear( 0 , 0 , D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER , 0 , 1.0f , 0 );
m_d3dDevice->BeginScene();
m_listener->Render();
m_d3dDevice->EndScene();
m_d3dDevice->Present(NULL, NULL, NULL, NULL);//刷新

//刷新后的事件处理
if( !m_listener->FrameEndEvent(tInterval){
break;
}
tLastFrame = tNow;
}

这个东西弄出来刷新率才30+.我就算把前后事件处理和刷新函数全部都架空了,也只能到这个数目了.WHY???

m_listener是个什么东西??
渲染了什么东西??
不说清楚怎么知道怎么回事啊

你这种情况下刷新速度慢可能有2个原因
1.m_d3dDevice 在创建的时候,就是CreateDevice那里的时候,使用的是软件渲染方式而不是硬件渲染方式
//软件渲染方式
g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dPresent_Param,&g_pD3DDevice);
//硬件渲染方式
g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dPresent_Param,&g_pD3DDevice);

2.m_listener这个东东要处理的东西太多太慢了

当然,编译器效率和机子速度慢原因 是排除在外的

看不懂,高手来指教吧