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

标签 directx textures directx-11

我有一系列着色器,它们是通过合并一系列片段以编程方式生成的。每个片段都可以有自己的纹理,并负责上传/绑定(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/

相关文章:

OpenGL alpha 值使纹理更白?

image - 通过 DirectX 更快地显示大图像?

c++ - D3DXERR_INVALIDDATA 发生

c++ - 如何在 OpenGL 中反转纹理颜色

c++ - Visual Studio 报告结构 vector 上的 push_back() 函数调用错误

c++ - 包含 DirectXTex.h 时出错

c++ - vs2012 DirectXMath 多实例重载函数

wpf - 使用 DirectX 11 在 WPF 控件上渲染

directx - IDirect3DDevice9,如何设置纹理缩放?

image-manipulation - 2D 图像中 "filling in"纹理的算法