윗 그림에서 보는 바와 같이, 화면을 회전하는 순간 건물의 색상과 빛의 속성이 변경된다.  

[원인]

나무를 그리기 위해 아래와 같은 코딩을 적용하였다. 

 ... 

 GLUquadricObj* obj=gluNewQuadric();
 gluQuadricDrawStyle(obj, GLU_FILL);
 gluQuadricNormals(obj,GLU_FLAT);
 gluQuadricOrientation(obj,GLU_INSIDE);
 glColorMaterial(GL_FRONT, GL_DIFFUSE);

 glPushMatrix();
 glTranslatef(x,y,0.f); 

 glColor3f(1.f,0.5f,1.f);
 gluCylinder(obj,0.3,0.3,1, 4, 1);


 glTranslatef(0.f,0.f,1.f); 
 glColor3f(0.f,1.f,0.f);
 gluCylinder(obj,1.5,0.,6,16, 1);
 
 gluDeleteQuadric(obj);

 glPopMatrix();

  문제는 glColorMaterial(GL_FRONT, GL_DIFFUSE); 구문이다.    

  GL 초기 Setup 과정에서는 glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); 로 세팅을 하는데, 프로그램 중간에 Diffuse 값만을 세팅하니, 이후에 glColor로 정의되는 색상은 Diffuse Color만 변경되므로 문제가 발생하였다.

 [해결책]
  glColorMaterial(GL_FRONT, GL_DIFFUSE); 구문을 생략
  만약에 반드시  glColorMaterial(GL_FRONT, GL_DIFFUSE)를 적용해야 한다면, 사용후 초기속으로 재설정해주를 코드 필요.
 

Posted by 꿈을펼쳐라
,