일부 지형 렌더링을 수행 중이고 일부 문제가 발생했습니다. 이 시점에서 나는 버텍스 패치를 테셀레이션 한 후 높이 맵을 사용하여 버텍스 패치를 옮깁니다. 현재의 문제는 렌더링이 꽤 펑키 한 것처럼 보입니다. 나는 이것을 잠시 동안 디버깅 해 왔으며 깊이 버퍼에 문제가있는 것처럼 보입니다. 과거에는 무슨 일이 일어나고 있는지 전혀 알 수 없습니다.터 레인 테셀레이션 및 깊이 버퍼
다음은 VS 그래픽 디버깅을 사용하여 촬영 한 깊이 버퍼의 이미지입니다. 나는 그것을 이해로서 나는 빨강 채널의 이미지와 녹색 채널을 잡고, 그래서 가장 좋은 방법은 디버거를 사용하여이를 보여 않네 정말 확실
여기
백 버퍼의 가까운 픽셀이어야합니다 추가 픽셀보다 더 어둡게 표시됩니다. 두 번째 이미지와 세 번째 이미지를 비교할 때 알 수 있듯이 그 반대가 발생하는 것처럼 보입니다. 뭔가를 오해하고 있거나 이상한 일이 있습니다.
아이디어가 없기 때문에 어떤 생각이나 방향을 지적하면 매우 감사하겠습니다.
나는 가능한 질문에 대한 내 깊이 버퍼 설정하고 방법을 게시합니다 :
여기내가 내 스텐실 상태 및 래스터 상태를 설정하고 방법은 다음과 같습니다
D3D11_DEPTH_STENCIL_DESC dsdesc;
ZeroMemory(&dsdesc, sizeof(dsdesc));
dsdesc.DepthEnable = true;
dsdesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
dsdesc.DepthFunc = D3D11_COMPARISON_LESS;
dsdesc.StencilEnable = true;
dsdesc.StencilReadMask = 0xFF;
dsdesc.StencilWriteMask = 0xFF;
dsdesc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
dsdesc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INCR;
dsdesc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
dsdesc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
dsdesc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
dsdesc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_DECR;
dsdesc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
dsdesc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
HR(_device->CreateDepthStencilState(&dsdesc, &_depthStencilState));
D3D11_RASTERIZER_DESC rd;
rd.AntialiasedLineEnable = false;
rd.CullMode = D3D11_CULL_BACK;
rd.DepthClipEnable = true;
rd.DepthBias = 0;
rd.DepthBiasClamp = 0.0f;
rd.FillMode = D3D11_FILL_SOLID;
rd.FrontCounterClockwise = false;
rd.MultisampleEnable = false;
rd.ScissorEnable = false;
rd.SlopeScaledDepthBias = 0.0f;
을 한 후 나는 참으로 오전
: 그들을 다음_context->RSSetState(_rasterStateWireframe);
_context->OMSetDepthStencilState(_depthStencilState, 1);
내가 내 깊이 버퍼를 설정하고 방법 사용 214,673,210
편집 :