我有一個程序,繪製一些地形,並模擬流過它的水(以便宜和簡單的方式)。並行構建OpenGL模型?
更新水容易使用OpenMP並行化,所以我可以每秒更新約50次。問題是,即使有少量的水,我的每秒抽吸量也非常低(從5開始,一旦有大量的水就下降到2左右)。
這不是視頻卡的問題,因爲地形比較複雜,而且畫得很快,所以boost::timer
告訴我,如果關閉水面,我可以每秒獲得無限繪製。它可能與內存帶寬有關(因爲我假設模型停留在卡上,並且不必每次都傳輸)。
我擔心的是,在每次平局中,我打電話glVertex3f()
大約一百萬次(最大尺寸爲450 * 600,每個頂點4個),並且完全按順序完成,因爲Glut不會讓我並行調用任何東西。
所以..是否有某種方法可以並行構建列表,然後將它同時傳遞給OpenGL?或者使其更快速地繪製它的其他方式?我是否使用了錯誤的方法(除了明顯的「使用更少的頂點」)?
這似乎正是我所期待的。謝謝。 – 2010-05-18 23:44:04