혼합 예제

WanJu Kim·2023년 1월 7일
0

2D Project

목록 보기
4/13

오늘의 과제는, 아래 텍스처의 배경을 어떻게 지우냐는 것이었다.

이 텍스처의 캐릭터 부분은 알파도가 1이다. 배경은 알파도가 0이다.(투명하다.) 그래도 별다른 처리가 없으면 이렇게 흰색 or 검은색으로 나온다. 원래는 투명한 이 배경을 어떻게 투명하게 출력할 것인가?

desc.RenderTarget[0].BlendEnable = true;
desc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
desc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;

답은 블렌딩에 있었다. 블렌드 설정을 true로 하고, source의 원본 혼합 계수를 D3D11_BLEND_SRC_ALPHA로 한다. 그러니까 투명도를 그대로 쓰겠다는 거다. 그러면 애초에 알파도가 1인 록맨은 그대로 나오고, 0인 배경은 사라져서 나온다는 거다. Dest의 원본 혼합 계수는 D3D11_BLEND_INV_SRC_ALPHA로 해주었다. 왜? 록맨을 그리기 전에 다른 록맨의 이미지가 아니라, Direct3D 초기화 할 때 하는 '후면 버퍼 지우기'를 했기 때문이다.

deviceContext->ClearRenderTargetView(rtv, clearColor);
clearColor(0xFF555566);	// FF : A, 55 : R, 55 : G, 66 : B. FF는 1이란 뜻이다. 즉 알파도가 1이다.

알파도가 1인 배경으로 초기화 했으므로, D3D11_BLEND_INV_SRC_ALPHA를 통해, 알파도를 0으로 만들어버렸다. 그리고 더하면 배경은 안 나오게 된다.

profile
Question, Think, Select

0개의 댓글