首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

关于DrawIndexPrimitive()的一些有关问题

2012-02-25 
关于DrawIndexPrimitive()的一些问题我正在做地形的视锥裁剪, 加载了一个512x512的高度图,建一个Vb保存所

关于DrawIndexPrimitive()的一些问题
我正在做地形的视锥裁剪, 加载了一个512x512的高度图,建一个Vb保存所有的顶点, 一个动态的IB,做的LOD ,地形分成NXN块,然后做AABB的视锥裁剪, 渲染地形的时候我是用了DrawIndexedPrimitive ()顶点个数是 512x512 但是我的PrimitiveCount都是变化的,但是 PrimitiveCount = 100000 和 PrimitiveCount = 0 的帧率居然一样,这让人很费解,哪位前辈给小弟解释一下,DrawIndexedPrimitive 到底做了哪些操作,为什么改变了PrimitiveCount 的数量却没有帧率的变化。

[解决办法]
到DX的Document里研究下使用PIX,
可以看到DrawIndexedPrimitive 在你的程序里干了些什么,包括每个vertex,pixel的变化,你可以找到答案。
[解决办法]
使用了indexbuffer和vertexbuffer的好处就是告诉显卡使用显存而不是内存
直接读取显存里的东西要比从内存读快很多
[解决办法]
PrimitiveCount = 100000 和 PrimitiveCount = 0 的帧率居然一样
你确定?或者你的PrimitiveCount = 100000被你自己的frustum拣选掉了呢。PrimitiveCount = 0 不绘制,应该是最快的,PrimitiveCount = 100000和0一样的fps,说明你的PrimitiveCount = 100000有可能成0了,没看到代码,没办法,只能猜了。
[解决办法]
对,你每次提交的多,主要是消耗的带宽多呀,虽然你没有索引那么多,现在cpu GPU之间的带宽是个瓶颈呀。如果显存够在,可以在开始时直接把所有的顶点提交(usage设default),索引用动态的,就是一次简单的优化。进一步的优化,你可以参考8叉树的一些做法,就是预先生成一系列的Batch,然后根据需要提交。
[解决办法]
纯支持~不是很理解这里相关的操作~

热点排行