[DX11 입문 제10장] 연습문제 7번 BoltAnim 문제

GPG 시리즈 관련 질답, 논의 공간.

Moderator: 류광

비회원

연습문제 7번 BoltAnim 문제

Post by 비회원 »

안녕하세요. 날씨가 많이 덥네요. 더위 조심하세요.~

10단 스텐실단원의 내용은 어느정도 개념 파악했습니다.
연습문제 3,4번정도는 스스로 해결했는데

9장 블렌드쪽 이해가 떨어져서 그런지..
7번문제가 해결이 안되네요..


쉐이더 리소스는 정상적으로 가져와서 원통에 그려주고 있습니다.


가산 혼합 까지 적용 했습니다.
기존 TransparentBS 값에서
SrcBlend,DestBlend,BlendOp값만 바꿔 주었습니다.

D3D11_BLEND_DESC AddDesc = { 0 };
AddDesc.AlphaToCoverageEnable = false;
AddDesc.IndependentBlendEnable = false;

AddDesc.RenderTarget[0].BlendEnable = true;
AddDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_ONE;
AddDesc.RenderTarget[0].DestBlend = D3D11_BLEND_ONE;
AddDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
AddDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;
AddDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ONE;
AddDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
AddDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;

HR(device->CreateBlendState(&AddDesc, &AddBS));

Draw 부분입니다.

md3dImmediateContext->OMSetBlendState(RenderStates::AddBS, blendFactor, 0xffffffff);
boxTech->GetPassByIndex(p)->Apply(0, md3dImmediateContext);
md3dImmediateContext->DrawIndexed(nCountCyl, 0, 0);

// Restore default render state.
md3dImmediateContext->OMSetBlendState(0, blendFactor, 0xffffffff);

이렇게 했더니.. 원통 부분이 하얗게 날라갑니다.
그다음 스텐실 적용을 해야 하는데..
감이 잘 안옵니다.

현재 단계까지 작업이 맞는것일까요?
다음 스텐실 적용을 어떻게 해야 하는지..
힌트좀 부탁드립니다. 감사합니다. ^^
비회원

아,.. 이 예제소스가 부록에 있었군요.

Post by 비회원 »

부록에 예제 소스가 있었네요..

그런데 부록 예제에서

//
// DepthWriteOffDSS
//

D3D11_DEPTH_STENCIL_DESC depthWriteOffDesc;
ZeroMemory(&depthWriteOffDesc, sizeof(D3D11_DEPTH_STENCIL_DESC));
depthWriteOffDesc.DepthEnable = true;
depthWriteOffDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO;
depthWriteOffDesc.DepthFunc = D3D11_COMPARISON_LESS;

HR(device->CreateDepthStencilState(&depthWriteOffDesc, &DepthWriteOffDSS));
.
.
.

md3dImmediateContext->OMSetDepthStencilState(RenderStates::DepthWriteOffDSS, 0);

이부분이.. 주석으로 막아도.. 차이가 없던데,.,,
이 부분이 이 연습문제의 핵심인거 같은데.. 아무런 차이가 없어요..
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

좀 이상하긴 합니다. ZeroMemory 때문에 depthWriteOffDesc.StencilEnable은 0(false)이 되어서 스텐실 판정이 비활성화되니까요.

스텐실을 다루는 제10장의 연습문제이긴 하지만, 이 연습문제의 핵심은 스텐실보다는 가산 혼합과 텍스처 여러 장을 번갈아 적용하는 게 아닌가 싶습니다.
Post Reply