응애맘마조

230206 강의 본문

공부/2D강의

230206 강의

TH.Wert 2023. 2. 6. 23:22

이미지의 알파에 대해서 배웠습니다. 투명도와 관계되어 있습니다.

값은 0 ~ 1 사이입니다. 1로 갈수록 불투명해집니다. 여태 나타내던 타일맵, 캐릭터, 오브젝트 등등 모두 알파가 1이라서 선명하게 나타낼 수 있었습니다.

예를 들어서 빨간색 화면에 파란색 사각형을 놓았다고 했을 때 각각의 알파는 1이라서 각각의 색깔로 보이게 됩니다. 하지만 알파를 낮춰서 빨간색을 0.5, 파란색을 0.5로 역행렬을 곱해서 1의 비율로 맞췄을 때 둘은 섞여서 보라색에 가까운 색을 보이게 됩니다.  그렇기 때문에 알파는 색이 아니고 색의 섞임으로 봐야 됩니다.

 

약간 필터에 대해서 살짝 알아봤습니다. 이미지를 표현할 때

D3D11_FILTER_MIN_MAG_MIP_POINT는 주변에 있는 픽셀로 샘플러 색을 채웁니다.

D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR는 주변에 있는 이미지 색으로 보간해서 색을 채웁니다. 알파값으로 처리되기 전에 있던 색으로 처리가 된다고 보시면 됩니다.

D3D11_BLEND_DESC desc;
ZeroMemory(&desc, sizeof(D3D11_BLEND_DESC));
desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
desc.RenderTarget[0].BlendEnable = true;
		
//rgb
desc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
desc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
		
//a
desc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ONE;
desc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ZERO;
desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
device->CreateBlendState(&desc, &blendState);
deviceContext->OMSetBlendState(blendState, NULL, 0xFF);

Direct3D11.cpp 파일 안에 마지막 부분에 알파값을 처리하는 코드가 있습니다.

코드 마지막 줄에 OM이라고 되어있는데 알파는 OM에서 처리한다는 것을 알 수 있습니다.

 

내일은 사운드에 대해서 배운다고 합니다.

읽어주셔서 감사합니다.

'공부 > 2D강의' 카테고리의 다른 글

230208 강의  (0) 2023.02.08
230207 강의  (0) 2023.02.07
230203 강의  (0) 2023.02.03
230202 강의  (0) 2023.02.02
230201 강의  (0) 2023.02.01
Comments