gpt4 book ai didi

c++ - 将着色器与 directx 11 相结合

转载 作者:行者123 更新时间:2023-11-28 07:17:06 25 4
gpt4 key购买 nike

有没有办法组合着色器?

假设我想要 4 个模型:

  • 一个只渲染了纹理。
  • 具有纹理和基本光效的一个。
  • 一个用骨骼动画渲染。
  • 使用骨骼动画和基本光效渲染的一个。

我知道的唯一方法是创建 4 个像素和顶点着色器文件。但是我是否还有 5 个要添加的效果,我必须创建更多的文件,如果我想添加越来越多的效果?我怀疑对于每种效果我都必须为每种可能性再创建一个文件。我知道对于灯光我可以直接在其他文件中设置它,当我不想使用灯光时,我将它设置为 1.0f 这样颜色就不会改变。但是如果我想有更多的效果,我的着色器中会有大约 20 个变量,如果我不使用它们不是没有用吗?还有其他方法吗?

提前致谢,我尽量让自己的语言易于理解,抱歉我的英语不好。

最佳答案

以下是一些想法:

  • 将通用功能移到单独的文件中,并使用 #include 在着色器之间传播它。
  • 使用#ifdef 进行条件编译。通过 D3DCompileD3D_SHADER_MACROfxc.exe/D 标志定义。您可以将所有内容组合到一个着色器中,然后将其编译成许多不同的二进制文件。
  • 使用一些效果框架(默认的 DirectX 框架,用谷歌搜索或自己制作):您不需要单独的着色器文件,所有内容都在一个文件中,如状态。
  • 保持原样:HLSL 很复杂,任何更多的复杂性都可能导致无法维护的困惑。

希望对您有所帮助!

关于c++ - 将着色器与 directx 11 相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060950/

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