2010-01-03 138 views
7

我想用OpenGL繪製很多球體(〜100k)。到目前爲止,我在做喜歡在OpenGL中繪製很多球體

for (int i=0; i<pnum; i++){ 
    glPushMatrix(); 
    glTranslatef(bpos[i].x, bpos[i].y, bpos[i].z); 
    glCallList(DListSPHERE); 
    glPopMatrix(); 
} 

東西使用正確的球之前,我用GL_POINTS。這讓我打電話給glDrawArrays一個包含所有非常有效的點的數組。有沒有比上面的代碼繪製許多相同的對象更好的方法?

+1

作爲Gregory Pakosz提到的,實例化是標準的做法。然而,我真的沒有得到真實世界的案例需要~100K的領域。我能想到的所有事情都會更好地用圓點表示。小心點亮你的用例? – Bahbar 2010-01-03 15:56:33

+0

我模擬土星的環,我想實時查看結果。 「深度」的視覺反饋至關重要,因此簡單的點不起作用。看例如:http://hanno-rein.de/examplespheres.png和http://hanno-rein.de/examplepoints.png – hanno 2010-01-03 18:54:17

+1

好例證。您可以通過在像素着色器中進行照明來模擬球體外觀。即使只應用基本的紋理也可以幫助你。要指出的是,100K球體必然會傷害perf,而點數不會太多(正如你已經注意到的那樣)。 – Bahbar 2010-01-03 21:19:00

回答

2

您可以使用點精靈和片段着色器來複制渲染球體的效果,而無需實際球體幾何體。不過,我會先嚐試實例化。