2011-04-11 19 views
1

我有一個關鍵的功能/事件允許用戶以減少「numParticles」glDrawArrays,動態改變正在繪製的點數?

glDrawArrays(GL_POINTS, 0, numParticles); 

但改變這個變量不僅不會改變點的數量正在繪製

所以我不得不修改原來的「頂點」陣列?

現在,我已經添加

glClear(GL_COLOR_BUFFER_BIT); 

我能看到點的數量現在正在發生變化。

但是將「numParticles」減少到零後,屏幕上還剩下點數?

此外,它似乎沒有影響着色器更新的點?

Code

+2

應該是的。您是否在刷新之前刷新顯示,例如使用'glClear(GL_COLORBUFFER_BIT)'? – UncleZeiv 2011-04-11 08:47:50

+2

請向我們展示一些上下文的整個繪圖功能。 – datenwolf 2011-04-11 10:34:39

+0

[這裏是所有代碼](http://repository.atwebpages.com/shader/windows.zip) – Miranda 2011-04-11 22:28:06

回答

0

你在你的頭蟲:

static int numParticles = 50000; 

這將爲每個對象(文件),那麼物體draw.o將有其自己的變量,局部變量,ogl2particle .o不要改變。 相反,你應該使用:

extern int numParticles = 50000; 

,在任何,但只有一個文件:

int numParticles = 50000; 

你可以讀一些安博在C全局變量在http://en.wikipedia.org/wiki/External_variable

相關問題