본문 바로가기

GRAPHICS/OpenGL ES

[OPENGL ES] OPENGL 얇게 이해하기 - 3D 도형의 색 문제 해결하기

OPENGL에서 그래프 렌더링 관련하여 2D로 변경해주어야 하는 일이 있었는데


그래프의 높이를 낮추어 2D에 가까운 형태로 구현해주었을 때 조명문제 때문에 2D가 깔끔하지 않게


그려지는 이유가 있었다. 그리고 더 찾아보고 적용하다보니 이게 조명문제 때문만이 아니라


그려진 도형에 해당하는 색상을 전부 입혀주지 않았기 때문에 발생한 일이었다.


모든 면에 제대로 된 색상을 입히고 색이 깨지는 현상을 보지 않으려면


vertices에 8줄의 값을 설정해주었다면 이에 입히는 color도 8줄로 설정해주어야 한다는 것이다.


물론 8줄보다 적거나 많거나 할 경우도 있을 수 있다. 이건 어디까지나 얕게 이해하고 얕게 적용하는 예 중에 하나니까.




기존 네 줄로 선언되있던 colors 배열을 네 줄을 추가해 8줄로 vertices 수와 맞춰주었다.



색을 전부 맞춰줬을 경우에는 Lighting 설정을 따로 안해두었기 때문에


모든 면이 설정된 조명에 구애받지 않는 모습을 확인할 수 있다.


첫번째는 설정해주기 이전의 초기 그래프, 두번째는 colors 배열을 수정해준 이후의 그래프,


세번째는 2D 구현을 위해 높이에 해당하는 float 값을 대폭 낮추었을 때의 출력되는 모습이다.







참고 : http://www.learnopengles.com/android-lesson-two-ambient-and-diffuse-lighting/