게임엔진/크로스플랫폼 : 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()