我想交錯頂點數據到標準矢量模板的STL容器。我已經成功地做到了這一點用OpenGL已經,我的網接口的源代碼都可以在網上對我的開源項目... https://github.com/RobertBColton/enigma-dev/blob/master/ENIGMAsystem/SHELL/Graphics_Systems/OpenGL3/GL3model.cppDirect3D 9.0交錯非fvf頂點緩衝區
現在我想使用的DirectX做同樣的方法,並已經成功地做到這一點部分是通過將我的FVF DWORD與我擁有的每個頂點的組件進行邏輯異或。然而,這是個什麼網目前呈現時,它僅包含頂點和法線爲... http://oi42.tinypic.com/2diq2dw.jpg
現在DX使這很難讓我做我在OGL做同樣的事情,我已經檢查,雙重檢查,並一遍又一遍地檢查,我的字節對齊在緩衝區內是完美的。我想要做的事情可以通過OpenGL維基解釋得更好...... /wiki/Vertex_Specification_Best_Practices#Formatting_VBO_Data
現在我不想實現一個着色器來完成這個任務。如果任何人都可以簡單地向我提供我正在嘗試做的任何指示,或者指示我在Direct3D 9中執行此操作的示例或教程的方向,它會真的幫助我,因爲這在DX中似乎不常見。
如果您閱讀頂點規範的最佳實踐,它還會告訴您不要使用浮點顏色。 RGB float在舊硬件上是T&L友好的格式,但RGBA不是。 RGBA ubyte對T&L友好,並且佔用了1/4的存儲空間。 RGBA ubyte也是D3D用於D3DFVF_DIFFUSE等格式的格式,雖然它的格式是ARGB。 –
嘿,謝謝你的迴應!但對於triangleCount,這不是三角形的數量,也就是按指數計算的元素數量,我認爲您在我的代碼部分中感到困惑。 OpenGL版本已經正常工作http://oi39.tinypic.com/2w53cqv.jpg。但是,感謝你提供的信息非常有用,你有什麼建議可以改變它,因爲我使用了一個類型爲gs_scalar的向量(代表圖形系統標量,默認爲float)? – Goombert
我會做的是使用std :: vector而不是std :: vector 。這是交錯格式的常用方法。像struct {float pos [3]; float normal [3]; DWORD顏色; float tex_st [2]; } // < - D3D9 ... D3D有一個宏,可以用來將浮點顏色打包成一個DWORD,D3DCOLOR_COLORVALUE(r,g,b,a)'。使用適合頂點顏色的格式和數據類型('GL_BGRA','GL_UNISNGED_BYTE'),您也應該可以在OpenGL中互操作地使用這種數據結構。 –