윗 그림에서 보는 바와 같이, 화면을 회전하는 순간 건물의 색상과 빛의 속성이 변경된다.
[원인]
나무를 그리기 위해 아래와 같은 코딩을 적용하였다.
...
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)를 적용해야 한다면, 사용후 초기속으로 재설정해주를 코드 필요.
'이슈와 해결 > Solution' 카테고리의 다른 글
[SQLite] CSV파일을 SQLite DB로 만들기 (0) | 2012.11.02 |
---|---|
GeoNames 데이터 포멧 확인하기 (0) | 2012.11.02 |
WinCE 5.0에서의 메모리 한계 해결방법 (3) | 2011.05.06 |
ActiveX에서 wglDeleteContext() 함수 꼭 실행시키기 (0) | 2010.04.11 |