首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用船体着色器和域着色器破坏2D着色器

使用船体着色器和域着色器破坏2D着色器
EN

Stack Overflow用户
提问于 2022-08-04 07:39:45
回答 1查看 107关注 0票数 0

我在https://www.rastertek.com/tutdx11.html上学习Rasterteks的DirectX11教程,并将它们结合起来创建和学习。

我刚刚实现了我的3D模型的镶嵌,并注意到我的2D渲染文本的着色器停止工作。我有不同的着色器为2D和3D,这是很好的工作,直到我实现了船体着色器和域着色器为我的三维渲染。下面是我设置着色器时的一些代码。

带有镶嵌结构的灯罩:

代码语言:javascript
复制
void LightShader::RenderShader(ID3D11DeviceContext * immediateContext, int indexBufSize)
{
    immediateContext->IASetInputLayout(layout);

    immediateContext->VSSetShader(vertexShader, NULL, 0);
    immediateContext->PSSetShader(pixelShader, NULL, 0);

    // using these two causes the 2D rendering to stop working
    immediateContext->HSSetShader(hullShader, NULL, 0);
    immediateContext->DSSetShader(domainShader, NULL, 0);

    immediateContext->PSSetSamplers(0, 1, &sampleState);

    immediateContext->DrawIndexed(indexBufSize, 0, 0);
}

用于渲染2D文本的Fontshader:

代码语言:javascript
复制
void FontShader::RenderShader(ID3D11DeviceContext * immediateContext, int indexBufSize)
{
    immediateContext->IASetInputLayout(layout);

    immediateContext->VSSetShader(vertexShader, NULL, 0);
    immediateContext->PSSetShader(pixelShader, NULL, 0);

    immediateContext->PSSetSamplers(0, 1, &sampleState);

    immediateContext->DrawIndexed(indexBufSize, 0, 0);
}

如果问题在那里,我也可以根据要求发布代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 07:50:29

这可能是因为你忘记了不绑定HS和DS的电话。比如

代码语言:javascript
复制
immediateContext->HSSetShader(NULL, NULL, 0);
immediateContext->DSSetShader(NULL, NULL, 0);

您应该启用调试层,它对于调试非常有用。

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

https://stackoverflow.com/questions/73232067

复制
相关文章

相似问题

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