2014-03-01 16 views
0

我正在使用openframeworks進行一些粒子演示(適用於iOS的v0.7.4)。如何禁用glPointParameterfv

有時我想按距離更改它們的尺寸, ,它適用於下面的代碼。

ofVboMesh mesh; 
mesh.setMode(OF_PRIMITIVE_POINTS); 
for(unsigned int i = 0; i < debris.size(); i++){ 
mesh.addVertex(debris[i]); 
    mesh.addColor(color_debris[i]); 
} 
static GLfloat distance[] = { 0.0, 0.0, 1.0 };//------------------ set vec 
glPointParameterfv(GL_POINT_DISTANCE_ATTENUATION, distance);//---- set attenuation 
glPointSize(40000); 
mesh.draw(); 

但是當下一次繪製另一個粒子時,不需要按距離改變它們的大小。我想取消或初始化我使用glPointParameterfv()所做的事情。

我想這可能是一個非常原始的問題,但無法找到辦法做到這一點。

回答

1

只需將其設置回默認值,即1.0,0.0,0.0。或者,您也可以在使用類似glGetFloatv(GL_POINT_DISTANCE_ATTENUATION, oldDistance);之類的方法更改它們之前獲取原始值,並在完成繪製粒子後將其設置回原始值。

+0

謝謝Maurice! (1.0,1.0,1.0)無法正常工作,但我可以根據您的指示解決此問題。 靜態GLfloat distance_def [] = {1.0,1.0,1.0}; //這僅是爲了初始化 glGetFloatv(GL_POINT_DISTANCE_ATTENUATION,distance_def); //獲得原始參數 ofLog(OF_LOG_ERROR, 「%F%F%F」, (1.0,0.0,0.0),我覺得很奇怪((1.0,1.0,1.0)更合理),但是,無論如何,我得到了我想要的視覺效果。 – Floclo

+0

不客氣。 OpenGL文檔說默認是(1)。我認爲這意味着1,1,1,但也許我解釋錯了。我會編輯我的答案。 –