首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用结构化缓冲区执行Direct3D 10硬件实例

使用结构化缓冲区执行Direct3D 10硬件实例
EN

Stack Overflow用户
提问于 2013-07-30 21:50:28
回答 1查看 1.8K关注 0票数 2

我试图使用结构化缓冲区对每个实例数据使用Direct3D 10+实现硬件实例实例,但我以前没有使用过它们。

当将每个顶点和每个实例数据组合到顶点着色器中的单个结构中时,我了解了如何实现实例--即将两个顶点缓冲区绑定到输入汇编程序并调用DrawIndexedInstanced函数。

有人能告诉我,当使用带有硬件实例的结构化缓冲区时,绑定输入汇编程序和进行绘图调用等的过程吗?我似乎在任何地方都找不到一个很好的例子。

据我理解,结构化缓冲区被绑定为ShaderResourceViews,这是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-30 22:02:04

是的,完全正确。只是不要在顶点缓冲区或输入布局中放置任何每个实例的顶点属性,并创建缓冲区的ShaderResourceView并将其设置在顶点着色器上。然后,您可以使用SV_InstanceID语义来查询您所在的实例,并从缓冲区中获取相关的结构。

StructuredBuffers与普通缓冲区非常相似。唯一的区别是您在创建时指定了D3D11_RESOURCE_MISC_BUFFER_STRUCTURED标志,填写了StructureByteStride,在创建ShaderResourceView时格式为DXGI_UNKNOWN (该格式由您的着色器中的结构隐式指定)。

代码语言:javascript
复制
StructuredBuffer<MyStruct> myInstanceData : register(t0);

是用于StructuredBuffer的HLSL语法,您只需像使用数组一样使用[]运算符访问它。

还有什么不清楚的吗?

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

https://stackoverflow.com/questions/17958080

复制
相关文章

相似问题

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