多纹理在DX11中如何工作?

时间:2013-08-23 00:08:44

标签: directx textures directx-11

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

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

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

1 个答案:

答案 0 :(得分:1)

在OpenGL中,您使用着色器程序内省。

DirectX还具有以下功能:

ID3D11ShaderReflection

ID3D11ShaderReflectionConstantBuffer

ID3D11ShaderReflectionType

ID3D11ShaderReflectionVariable

D3DCompiler_xx.dll

中定义

还有效果框架(tutorialreference),这是一个围绕着色器反射的包装器,也允许你做过的事情:“我以编程方式生成的一系列着色器合并一系列片段“。

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

您可以在DirectX SDK中找到Effect11的完整源代码,因此您可以自己实现这样的功能。另请参阅here获取Win8SDK更新版本。

快乐的编码!