gpt4 book ai didi

c++ - DirectX 11 多常量缓冲区

转载 作者:太空宇宙 更新时间:2023-11-04 13:22:55 36 4
gpt4 key购买 nike

我试图让我的边界框在模型之上渲染,但是我无法让它们同时渲染。我已将其缩小为一个持续的缓冲区问题,因此我将它们设置为 2 个不同的插槽,例如

边界框

//Constant Buffer Code!
CONSTANT_BUFFER0 cb0_values;

cb0_values.WorldViewProjection = (*world) * (*view) * (*proj);

//Draw the buffer
m_pImmediateContext->DrawIndexed(8, 0, 0);

m_pImmediateContext->UpdateSubresource(m_pConstantBuffer1, 0, 0, &cb0_values, 0, 0);
m_pImmediateContext->VSSetConstantBuffers(1, 1, &m_pConstantBuffer1);

模型

m_pImmediateContext->UpdateSubresource(m_pConstantBuffer, 0, 0, &modelValues, 0, 0);
m_pImmediateContext->VSSetConstantBuffers(0, 1, &m_pConstantBuffer);

m_pImmediateContext->VSSetShader(m_pVShader, 0, 0);
m_pImmediateContext->PSSetShader(m_pPShader, 0, 0);
m_pImmediateContext->IASetInputLayout(m_pInputLayout);

m_pImmediateContext->PSSetSamplers(0, 1, &m_pSampler0);
m_pImmediateContext->PSSetShaderResources(0, 1, &m_pTexture0

但是,这不起作用,只有模型正确显示,而我的立方体无处可见,但是如果我注释掉模型绘制并执行:

m_pImmediateContext->UpdateSubresource(m_pConstantBuffer1, 0, 0, &cb0_values, 0, 0);
m_pImmediateContext->VSSetConstantBuffers(0, 1, &m_pConstantBuffer1);

我可以看到我的立方体,但没有模型(很明显),一定有一些我没有掌握但无法解决的简单概念。

谢谢,

最佳答案

经过多次撞墙后,我终于弄明白了,这是由于我的模型中设置了输入布局和着色器,但当它再次渲染框时却没有改回来。

TLDR - BoundingBox 需要绘制

UINT stride = sizeof(POS_COL_VERTEX);
UINT offset = 0;
m_pImmediateContext->IASetVertexBuffers(0, 1, &m_pVertexBuffer, &stride, &offset);

//Constant Buffer Code!
CONSTANT_BUFFER0 cb0_values;

cb0_values.WorldViewProjection = (*world) * (*view) * (*proj);

m_pImmediateContext->VSSetShader(m_pVertexShader, 0, 0);
m_pImmediateContext->PSSetShader(m_pPixelShader, 0, 0);
m_pImmediateContext->IASetInputLayout(m_pInputLayout);

关于c++ - DirectX 11 多常量缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426164/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com