본문 바로가기

GRAPHICS/OpenGL ES

[OPENGL ES] 모델간 겹치는 상황에서 색이 깨지지 않게 하기

visualization중 모델 여러개를 그려서 색을 겹쳐 Interpolate 효과를 내고 싶었는데 모델들이 겹치니 색이 깨지는 걸 확인했다.


폭풍 서치를 통해 여러 방법들을 적용할 수 있었다.


우선 적용하기 이전에 모델들이 이렇게 깨져보였다면





다음과 같은 glDisable과 Enable을 통해 모델들이 겹치면서도 깨지지 않는 모습을 구현할 수 있다.


glBlendFunc같은 경우 모델과 색상들의 blending에서 아주 중요한 역할의 코드인데


파라미터에 어떤 설정을 해주느냐에 따라 섞이는 모습이 천차만별로 변하는 것을 확인할 수 있다.


아래같은 경우에는 위의 코드대로 GL_ONE, GL_ONE으로 설정해 주었을 때에 blending의 결과이다.




다음 아래같은 경우는 GL_SRC_ALPHA, GL_DST_COLOR 로 설정해주었을 때 blending의 결과이다.


다양한 변수들을 모두 이해하진 못했지만 우선 GL_DST_COLOR같은 경우에는 겹치는 모델들이


혼합된 색을 표현하지 않고, 각자의 색상을 유지한 채로 blending을 하게 하는 변수로 추측된다.


앞으로 다양한 설정값들을 통해 여러 결과들을 도출해볼 수 있을 것.


여기서 겹치는 모델들간의 알파값 조정도 굉장히 중요하다. 




참조 :


 http://diehard98.tistory.com/entry/OpenGL-블렌딩


https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml


http://www.learnopengles.com/android-lesson-five-an-introduction-to-blending/