簡體   English   中英

Direct3d和hlsl可變大小的頂點和多維幾何對象?

[英]Direct3d and hlsl varying size vertices and multiddimensional geometric objects?

我是Direct3d,Graphics,HLSL,c ++的新手,並且我試圖編寫一個程序來呈現不同的幾何多維形狀(例如,超立方體),該程序應該在用戶定義后從用戶那里接收頂點繪制尺寸,繪制,旋轉和平移形狀的數量。

  • 第一個問題是如何定義動態頂點結構(可以使用指針)。

  • 第二:將形狀從x維空間投影到3維空間,我應該在代碼(CPU)中執行此操作,還是可以將對象頂點和投影矩陣傳遞給着色器(HLSL),如果可以,如何(尤其是在運行時定義的矩陣大小不同)。

  • 與上述視圖矩陣問題相同(假設對象是4-d,我希望程序放大/縮小->方法,或者在4-d空間中沿x方向移動“我想處理對象的空間而不是投影的空間”)

  • 第三:如果無法在着色器中實現上述所有功能,我可以使用c ++ amp(或其替代方法)來加速主程序中此類操作的執行,還是會導致“ Draw()”的性能下降功能。

我已經搜索過網絡和“ Stackoverflow”,但是找不到任何有用的東西。

免責聲明:我不是GPU和着色器方面的專家; 而且我使用的是OpenGL / WebGL / GLSL,而不是Direct3D / HLSL。 所以我只回答這個問題,因為沒有人知道。 :-)

關於指針:我非常確定您不能在GPU內使用指針,因為發送到GPU的數據在GPU內存中將具有不可預測的地址(位置)。

但是對於動態數據結構(可變數量的維),似乎可以通過更改傳遞給vertexAttribPointer()或等效參數的“ size”參數來vertexAttribPointer() 您傳入包含所有頂點坐標的平面數組,每個頂點n個坐標; 並使用size參數告訴着色器n是什么。

然后,在頂點着色器中,可以使用在着色器中根據傳入的參數構造的投影矩陣,將數據從n維投影到3維。

我認為類似地,在片段(像素)着色器中,可以使用從傳入的參數在着色器中構造的視圖矩陣,將數據從3維投影到2維。

希望這可以幫助您入門,這樣您就可以提出更具體的問題了。 老實說,我還沒有發現SO可以像回答Python之類的其他主題一樣有效地解決圖形問題。 在特定於Direct3D的網站上詢問運氣可能會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM