0
我想禁用和啓用z緩衝區,但仍然skydome寫入到zbuffer。我正在使用DirectXTK來達到這個目的,但它似乎不能正常工作。禁用z緩衝不工作使用directxtk
CommonStates states(m_Graphics.getDevice());
m_Graphics.getContext()->RSSetState(states.CullNone());
XMMATRIX sphereWorld;
XMMATRIX sphereScale = XMMatrixScaling(200.0f, 200.0f, 200.0f);
XMMATRIX Translation = XMMatrixTranslation(m_Camera.Position().x,
m_Camera.Position().y, m_Camera.Position().z);
sphereWorld = sphereScale*Translation;
m_Graphics.getContext()->OMSetDepthStencilState(states.DepthNone(), 1);
m_shape->Draw(sphereWorld,m_Camera.ViewMatrix(), m_Camera.ProjectionMatrix(), Colors::White, m_texture.Get());
m_Graphics.getContext()->OMSetDepthStencilState(states.DepthDefault(),1);
XMMATRIX cameraInverse = XMMatrixInverse(nullptr, m_Graphics.getViewMatrix());
XMMATRIX translate = XMMatrixTranslation(2.0f, -3.0f, 2.0f);
XMMATRIX rotation = XMMatrixRotationRollPitchYaw((float)XM_PI/9.0f, (float)XM_PI/0.2f, (float)XM_PI/0.1f);
XMMATRIX world = rotation *translate *cameraInverse;
m_Tiny->Draw(m_Graphics.getContext(), states, world, m_Graphics.getViewMatrix(), m_Graphics.getProjectionMatrix());
m_Graphics.getContext()->RSSetState(states.CullCounterClockwise());
m_Graphics.getContext()->RSSetState(states.Wireframe());
m_Grid.DrawGrid();