2016-05-15 20 views
0

zバッファを無効にして有効にしようとしていますが、まだskydomeがzバッファに書き込みます。私はその目的のためにDirectXTKを使用していますが、おそらく動作していないようです。disable 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(); 

答えて

0

GeometricPrimitiveModel両方必要な状態が内部でそのAPIの一部として、深さ/ステンシル状態を含めてレンダリングを設定します。

GeometricPrimitiveの場合は、setCustomStateコールバックを使用して、デフォルトの状態設定を上書きします。例えば、ここでラムダを使用した例があります:

m_shape->Draw(sphereWorld,m_Camera.ViewMatrix(), m_Camera.ProjectionMatrix(), 
Colors::White, m_texture.Get(), false, [=] 
{ 
    m_Graphics.getContext()->RSSetState(states.CullNone()); 
    m_Graphics.getContext()->OMSetDepthStencilState(states.DepthNone(), 1); 
}); 

Modelについて、あなたは迅速な微調整のためにDraw方法で同じsetCustomStateコールバックを使用することができ、またはあなただけの高度な描画パターンを実装することができます。 wiki

を参照してください
関連する問題