|
안녕하세요.. OpenGL로 3차원 개체를 그리는데.. 첨부파일과 같이...
이상하게도 덩치가 큰 녀석들에게는 조명효과가 반영되지 않습니다.
작은 박스들은 빛에 의해 면들의 구분이 확실히 되는데...
큰 박스들은 빛을 하나도 못 받는 것 처럼.. 한 면으로 보입니다..
아주 가까이서 보면..미미하게 구분이 되는 것으로 봐선...
크기가 커짐에 따라 조명효과가 줄어드는 것 같은데... 이게 말이 되는 얘긴지도 잘 모르겠습니다.
광원과 재질 설정하는 코드는 아래와 같습니다.. 빛의 속성(mbientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f }와 같은)을 바꾸어 보았지만.. 전체적으로 반사에의한 색 변화 정도만 있고..
역시 큰 물체들은 한 덩어리로 보입니다.
지푸라기라도 잡고싶은 심정이네요.. 도와주세요...
-------------------------------------------------------------------------------------------
GLfloat lightPos[] = { 0.0f, 0.0f, 1.0f, 0.0f };
GLfloat ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f };
GLfloat diffuseLight[] = { 0.4f, 0.4f, 0.4f, 1.0f };
GLfloat specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat specref[] = { 5.0f, 5.0f, 5.0f, 1.0f };
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Black Background
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glEnable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glFrontFace(GL_CCW);
glEnable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glMaterialfv(GL_FRONT, GL_SPECULAR, specref);
glMateriali(GL_FRONT, GL_SHININESS, 1);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
glEnable(GL_LIGHT0);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations
-------------------------------------------------------------------------------------------------
|