gpt4 book ai didi

directx - DX11 中的多纹理如何工作?

转载 作者:行者123 更新时间:2023-12-03 14:41:17 26 4
gpt4 key购买 nike

我有一系列着色器,它们是通过合并一系列片段以编程方式生成的。每个片段都可以有自己的纹理,并负责上传/绑定(bind)适当的值。

我在 Google 上找到的所有解决方案都可以使用纹理数组或指定寄存器(例如 http://www.rastertek.com/dx11tut17.html )。这不会很好地组合。在 GL 中,这很容易,因为您可以按名称查找纹理。

这里有更好的方法吗?或者我是否必须跟踪每个片段用于通过寄存器寻址它们的纹理数量?

最佳答案

在 OpenGL 中,您使用着色器程序自省(introspection)。

DirectX 也有这样的能力:

ID3D11ShaderReflection

ID3D11ShaderReflectionConstantBuffer

ID3D11ShaderReflectionType

ID3D11ShaderReflectionVariable

D3DCompiler_xx.dll 中定义

还有 Effects 框架(tutorialreference),它是着色器反射的包装器,还允许像您所做的那样:“我通过合并一系列着色器以编程方式生成的系列着色器片段”。

只有一个问题是 Microsoft 不允许部署包含这些功能的 Windows 应用商店应用程序。但这对于桌面应用程序来说没问题。

您可以在 DirectX SDK 中找到 Effect11 的完整源代码,因此您可以自己实现这样的东西。另见 here适用于 Win8SDK 更新版本。

编码愉快!

关于directx - DX11 中的多纹理如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392695/

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