DrawIndexedPrimitive引數詳解

2021-09-08 18:12:23 字數 1609 閱讀 8177

hresult drawindexedprimitive(

[in]  d3dprimitivetype type,

[in]  int basevertexindex,

[in]  uint minindex,

[in]  uint numvertices,

[in]  uint startindex,

[in]  uint primitivecount

);

minindex:這個是相對於vertexbuffer而言,它是指繪畫中用到的vertexbuffer的最小索引,感覺他只是提示indexbuffer陣列裡最小的index是值。網上的有一種扯蛋的說法誤導了我很久。實際上我覺得這個引數一點用都沒有,這個引數可以通過startindex和primitivecount遍歷indexbuffer算出來。而且實際中我測試這個引數好像也是沒有任何用處的,某種意義上,他可以為匯出頂點的起始索引減法有幫助。
numvertices:它不是實際畫的頂點數目,而是使用到的vertexbuffer區域大小,比如要畫乙個三角形,有可能numvertices=4,說明中間有乙個頂點沒有用到如下圖所示:

minindex和numvertices決定了本次繪畫時,用到的vertexbuffer 頂點區間。
startindex:它是對於indexbuffer而言的,indexbuffer使用的開始位置。
basevertexindex:他的影響是每乙個vb indexbuffer的值都要加上這乙個數值見見圖1,,頂點快取的第乙個頂點索引的偏移位置,偏移是因為當多個頂點快取合併成一塊全域性快取中時每塊都有乙個基準的offset值,例如合併多個頂點快取減少渲染batch數,提高效能,但是較少使用。

決定vertexbuffer在繪圖中使用到的頂點區間:

起始:1.setstreamsource 中的offset

2.如果basevertexindex不為0,則代表,indexbuffer每乙個值都要加上這個值。所以basevertexindex+offset就可以被認為是vertexbuffer的起始位置。

3.如果minindex不為0,有兩種可能,未經basevertexindex轉化的話,minindex是50,這樣在vertexbuffer的時候不可以加上這個minindex,這樣起始位置就是offset+basevertexindex+(minindex-basevertexindex)。如果經過basevertexindex轉化之後的話,minindex是0,則起始位置就是offset+basevertexindex+minindex。

大小:不知道minindex對numvertice的影響在實際中要檢視一下。

關於indexbuffer區間:

起始:直接為startindex

大小:目前只可以通過按prim計算。

DrawIndexedPrimitive引數詳解

hresult drawindexedprimitive in d3dprimitivetype type,in int basevertexindex,in uint minindex,in uint numvertices,in uint startindex,in uint primitive...

hda verb引數詳表

hda verb引數詳表 hda verb的由來 hda verb是linux下面的alsa project的一條命令,它的作用是傳送hd audio命令。命令格式 linux hda verb dev snd hwc0d0 0x12 0x701 2 mac hda verb 0x12 0x701 ...

linux shutdown命令以及引數詳解

在說shutdown命令之前 先說一下sync命令 sync 將記憶體中尚未寫入硬碟的資料寫入硬碟 因為linux為了保證資料讀寫速度,把常用的資料放在記憶體中,不會立即寫入硬碟,如果有不當關機,這些資料就會丟失 所以在執行shutdown reboot之類的命令之前,應當多執行幾次sync命令來保...