|
|
自己编写了一个地形,预处理了大量数据后开始进入循环渲染。期间没有任何计算,都是调用扇面样板的索引绘制的。但CPU使用率却占到了70%多,Release模式也有60%多,而且是65*65的小地图,不知道怎么回事啊,渲染循环的大体框架如下:
//第1个函数
VOID Game::Render()
{
// 清除后台缓冲为指定颜色
// 开始渲染
调用下面的方法___FLandInfo: raw()
// 结束渲染
g_pd3dDevice-> resent( NULL, NULL, NULL, NULL );
}
//第2个函数
VOID FLandInfo::Draw()
{
//设置VB,State,FVF
for (16个循环)
{
if (如果此砖块可渲染)
{
调用下面的方法___FPatch::DrawPatch(传两个参数都是指针)
}
}
}
//第3个函数
void FPatch::DrawPatch(两个参数)
{
//创建局部变量接收2个参数
for (8个循环 Z)
{
for (8个循环 X)
{
调用下面的内联函数___DrawFan(三重指针 ppp[z][x], 指针, pD3D设备);
}
}
}
//第4个函数
inline void FPatch::DrawFan(p, p, pd3dDevice)
{
//创建局部变量接收3个参数
pd3dDevice->SetIndices(IB);
pd3dDevice->DrawIndexedPrimitive();
}
我猜测可能是循环+压栈太多了,另外有个三重指针寻址不知道是不是很慢啊?
希望高手能给个答复~ [em4] [em4] |
|