在我的類似CAD的應用I存儲在以下結構中的陣列矢量座標:具有不同結構的大陣列的快速轉換
struct coord
{
double x,y,z;
unsigned char flags;
};
的x,y和z保持的3D座標,標記包含附加信息(例如如果一個多邊形在這裏結束並且不需要繪製到這個數組中的下一個座標)。
現在這些數據必須被轉換爲一個浮點數組,每個浮點數對應於x,y和z,並且這些三元組的數量與要繪製的多邊形中的點數一樣多。原因是:轉換後的座標數組必須交給OpenGL函數glVertexAttribPointer()讓OpenGL繪製該多邊形。
我的問題:轉換這些數據的最快方式是什麼?我唯一的想法是分配目標數組,並在循環中通過它來將座標值向下浮動 - 這對我來說聽起來相當緩慢。
還有其他想法嗎?
謝謝! *)
*)我知道stackoverflow不喜歡友好,但事實上我喜歡它是友好的,這就是爲什麼我要感謝所有試圖在這裏給出答案的人!在這個世界上有足夠的不友好的地方,stackoverflow不應該是另一個!
編寫一個包裝類,它已經將一個數組/矢量中的座標x,y,z保存在一個包含相同長度的'flags'的單獨對應數組中。只需將內部數組(或vector.data())交給OpenGL函數(而不是複製大量數據),就像'string :: c_str()'。 –
@PeterSchneider不,這不合法。請參見[什麼是嚴格的別名規則?](http:// stackoverflow。com/questions/98650/what-is-strict-aliasing-rule) – NathanOliver