游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2065|回复: 0

各位高手帮帮忙!谢谢了!!

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2003-11-17 14:17:00 | 显示全部楼层 |阅读模式
请大家帮帮忙,谢谢了!
我想用DrawIndexedPrimitive来代替DrawSubset,而且并没有进行mesh的优化,但用DrawIndexedPrimitive后,帧率从100下降到了20!!用DrawSubset时并没有进行mesh的优化,所以按理说DrawIndexedPrimitive来代替DrawSubset的速度应该是一样的啊!




g_pMesh->LockAttributeBuffer(3,(DWORD**)&Attribute); //锁定属性缓冲
copyattribute=Attribute;
for( DWORD i=0; i<g_dwNumMaterials; i++ )//g_dwNumMaterials对所有三角形按照属性值进行分类设置其渲染属性
{

g_pD3DDevice->SetMaterial( &g_pMeshMaterials );
g_pD3DDevice->SetTexture( 0, g_pMeshTextures );


//g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, n);//直接用顶点缓冲来渲染

for(DWORD j=0; j<fn; j++)//fn网格的面数,在属性缓冲中遍历所有三角形面片的属性值
{
// N=j;//记录第几个三角形
if((*Attribute)==i)//就是如果此三角形的属性是i那么就渲染它,就是每次循环找出所有相同属性的三角形
g_pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,n,j*3,1);//DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,fn*3,0,fn);用网格的索引缓冲来渲染DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,n,N*3,1)

Attribute++;//属性数组指针指向下一个三角形的属性

}

Attribute=copyattribute;//每次循环要从属性数组的起始地址开始*/


// g_pMesh->DrawSubset( i);
}
g_pMesh->UnlockAttributeBuffer();//解锁属性缓冲

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-24 06:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表