게임엔진/크로스플랫폼 : HazelEngine
230502 Hazel GameEngine : Texture Blending
mrawesome
2023. 5. 6. 20:37
https://github.com/ohbumjun/GameEngineTutorial/commit/0099fe921d491702a2ecff3e2915ab33200c9cc2
블랜딩 이란 ?
반투명 혹은 투명 물체를 Rendering 할 때 어떻게 처리할 것인가에 대한 것이다. 즉, 이미 프레임 버퍼에 렌더링된 색상 + 현재 렌더링 하는 색상.
OpenGLRendererAPI::Init
void OpenGLRendererAPI::Init()
{
// Blending 허용
glEnable(GL_BLEND);
// Blending Function 정의 ex) glBlendFunc(src, dest)
// - src : src RGBA 계산 방법 (기본 : GL_ONE == 현재 그리는 색상 그대로 가져감)
// - dest : dest RGBA 계산법 (기본 : GL_ZERO == 기존 그려진 색상 모두 지움)
// 즉, 기본설정값 1 + 0 = 1
// 아래 설정값 적용
// ex 1) 현재 그리는 색상이 아예 투명하다면
// - src alpha = 0 / dest alpha = 1 - 0 = 1
// ex 1) 현재 그리는 색상이 아예 '반' 투명하다면
// - src alpha = 0.5 / dest alpha = 1 - 0.5 = 0.5
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
OpenGL 의 경우 위와 같이 Blending 을 적용할 수 있다.
이러한 Init 은 맨 처음 Application 프로젝트의 생성자에서 진행해줄 것이다.
Application 생성자
-> Renderer::Init();
-> RenderCommand::Init()
-> RendererAPI* s_RendererAPI->Init()
-> (OpenGL 의 경우)OpenGLRendererAPI->Init()