首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用z缓冲区不使用directxtk。

禁用z缓冲区不使用directxtk。
EN

Stack Overflow用户
提问于 2016-05-15 11:59:13
回答 1查看 142关注 0票数 0

我正在尝试禁用和启用z缓冲区,但是skydome仍然会写到zbuffer。我正为此目的使用DirectXTK,但它似乎不起作用。

代码语言:javascript
复制
    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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-15 17:10:20

GeometricPrimitiveModel都在内部设置了所需的呈现状态,包括深度/模板状态,作为其API的一部分。

对于GeometricPrimitive,可以使用setCustomState回调覆盖默认状态设置。例如,下面是一个使用lambda的示例:

代码语言:javascript
复制
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);
});

对于模型,您可以在Draw方法上使用相同的setCustomState回调来快速调整,也可以只实现高级绘图模式。见维基

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37238018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档