응애맘마조
230206 강의 본문
이미지의 알파에 대해서 배웠습니다. 투명도와 관계되어 있습니다.
값은 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에서 처리한다는 것을 알 수 있습니다.
내일은 사운드에 대해서 배운다고 합니다.
읽어주셔서 감사합니다.
Comments