2014-04-08 6 views
0

이 사진을 보면이있다. 이것이 정상적인 문제인지 궁금합니다. 아니면 잠재적으로 이러한 표면을 비추는 조명의 위치일까요? 내 주요 방법은OpenGL을 조명이 밝은 표면

난 그냥 이렇게 :

//enable lighting 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 

//setup lighting 
float lightColor [] = {1.0f, 0.8f, 0.8f,1.0f}; 

glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, lightColor); 
GLfloat lightpos[] = {2,2,4,4}; 
glLightfv(GL_LIGHT0,GL_POSITION, lightpos); 

당신이 법선을 참조해야하는 경우 나는 그것을 업로드 할 수 있지만, 그들과 함께 여부 문제가 있는지 확실하지 않습니다.

+0

왜 'lightpos' 4의 마지막 구성 요소입니까? 방향성 조명은 0이거나 점등은 1입니다. 또한 일반적으로 정점에서의 조명만을 계산하는 고정 파이프 라인을 사용하여 넓은 표면 (조명으로부터의 거리에 비해)에서 매우 좋은 조명을 얻지는 않습니다. 지오메트리를 작은 삼각형으로 분할 할 수 있습니다. – GuyRT

답변

1

법선이 계산되지 않는 것 같습니다. 다른 물체의 같은 방향의면이 어떻게 다르게 켜져 있는지 확인하십시오.

내가 추측 것 : 개체를 변환 할 때 당신이 바로 법선을 변환하지 않는

  • ;
  • 법선이 단위 길이로 정규화되지 않았습니다 (코드에 glEnable(GL_NORMALIZE)이 있습니까?)
  • 법선 계산이 다른 방식으로 잘못되었습니다 (예 : 값을 반올림하여 렌더링하기 전에 반올림).

실제 코드를 보지 않고 더 많은 가능한 원인을 제안하는 것은 어렵습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 법선을 약간 엉망으로 만들고 조금 더 좋아졌다. 그러나 과제는 제출해야하므로 제출해야합니다. 2 번째 임무를 위해 더 살펴볼 것입니다. – AndyOHart