DrawIndexedPrimitive的NumVertics參數

請問這個參數指的是什麼值?是繪製過程中實際存在的頂點總數還是繪製圖元過程中所需要遍歷到的頂點索引總數? 我看的sdk範例中是
lpD3DDev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0, 0,
lpMesh->GetNumVertices(), 0,
lpMesh->GetNumFaces());

其中lpMesh->GetNumVertices()就是實際的頂點數,這就令我有點不解其義了。因為明明給ib中灌的是lpMesh->GetNumFaces()*3個索引。比方講兩個共邊三角形,用ib繪了兩次三角型,這個值不給6而給5?

[344 byte] By [wu_chung_tang-雲遊僧] at [2008-6-2]
# 1
这个函数的参数意思是这样的:在本次调用中使用的所有索引值,最小的一个不小于minIndex,最大的一个不大于minIndex+NumVertices-1。当然是不是真的落在这个范围以内,要由调用者决定。minIndex和NumVertices这两个值并不影响绘制,仅仅是给Driver作统计或者优化用的。
zhangyan_qd-doggyzone at 2007-10-26 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 2
zhangyan_qd(doggyzone):
上面講錯了 應該是"這個值不給6而給4?"
你的意思是講這個值是實際頂點總數 跟ib繪製無關 那麼我若是總共有100個索引 其中vb中的頂點只有50個 偶現在只想畫從第40到第70個的索引 那麼能不能辦到呢
wu_chung_tang-雲遊僧 at 2007-10-26 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 3
難道說實際繪製的數目只是由PrimitiveCount參數決定?
wu_chung_tang-雲遊僧 at 2007-10-26 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 4
没错,这个值和实际绘制的数目没有直接联系,你只需保证在ib里你所用到的index不超过这个范围就可以了。你完全可以把minIndex设成0,把numVertices设成所有Index里的最大值+1,这样always不会错。具体绘制了几个primitive是由PrimitiveCount来决定的。
如果你想只使用ib中的一部分index,应该指定startIndex参数,比如你的例子,想画100个index中的40-70,就把startIndex设成40好了。而因为vb中vertex只有50个,所以只要把numVertices设成50,无论你用哪一部分ib画都是对的。
zhangyan_qd-doggyzone at 2007-10-26 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 5
閣下言之有理阿,這的確是一個從numVertices的騷擾中擺脫出來的好想法。
wu_chung_tang-雲遊僧 at 2007-10-26 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 6
不過呢 我發現 我是用vb/ib自行渲染mesh 當用你講的那種固定給VertexStart(0)和VertexNum(實際頂點總數)時 fps是83左右 但是當我獲得Mesh中每一部分的AttributeTable中的VertexStart和VertexNum並用他們填充DrawIndexedPrimitive的那兩個參數後 結果是141fps 看來這兩個參數還是存在明顯意義的 正在思考中

MEsh經過內部優化後將三角形排成有序列,這兩個值還容易推算出 但是相對無序的情況 比如地型渲染 就很難辦到了 用你的「笨方法」又效能較低 真是耐人尋味
wu_chung_tang-雲遊僧 at 2007-10-26 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...
# 7
这两个参数虽然不影响绘制,但是会加快硬件内部Vertex Cache Hit/Miss测试的速度。所以指定一个比较有意义的值会比较快。
你可以做个试验:如果你用到的index没有一个是重复的的话,我觉得应该速度上没有什么差异,因为所有的Vertex都miss了嘛。
“相对无序”也不见得,只要有ib就可以遍历一遍ib求一个最大值最小值出来作为这两个参数,只要ib不是一直在变化就是了。话说回来,动态ib本来就效率比较低,也不在乎这一点点优化了。
zhangyan_qd-doggyzone at 2007-10-26 > top of Msdn China Tech,专题开发,技术,项目,游戏开发...