2014-03-01 4 views
0

openframeworks (iOS의 경우 v7.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

모리스! (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)은 훨씬 더 합리적입니다). 그러나 distance_def [0], distance_def [1], distance_def [2] 어쨌든 나는 내가 원했던 시각적 효과를 얻었습니다. – Floclo

+0

당신을 진심으로 환영합니다. OpenGL 문서는 기본값이 (1)라고했습니다. 그게 1,1,1을 의미한다고 생각했는데, 아마도 그 잘못을 해석했습니다. 내 대답을 편집 할게. –