首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX 11顶点着色器反射

DirectX 11顶点着色器反射
EN

Stack Overflow用户
提问于 2017-02-22 18:44:41
回答 1查看 988关注 0票数 3

我正在尝试编写一些DirectX代码,它采用编译后的着色器,并使用反射来自动生成顶点着色器的输入布局。我有一个简单的顶点着色器,它被设计为利用实例化的优势,这是它接受的输入:

代码语言:javascript
复制
struct VertexIn
{
    // Per-vertex data
    float3 pos      : POSITION;
    float4 color    : COLOR;

    // Per-instance data
    matrix worldMatrix : WORLDMATRIX;
};

如果我要手写,我的布局是:

代码语言:javascript
复制
// Per-vertex data
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
// Per-instance data.
{ "WORLDMATRIX", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "WORLDMATRIX", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "WORLDMATRIX", 2, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
{ "WORLDMATRIX", 3, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 }

当我反射编译的着色器时,我获得了正确的输入参数数量,但是当我尝试通过D3D11_SIGNATURE_PARAMTER_DESC读取输入描述时,我找不到填充D3D11_INPUT_ELEMENT_DESC成员InputSlotInputSlotClassInstanceDataStepRate所需的详细信息。我是在错误的描述中查找此信息,还是无法通过反射获取实例化的详细信息?

如果这是不可能的,那么我猜我唯一的选择就是传递期望的顶点输入布局并检查所有参数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-23 12:00:29

如果仅提供顶点着色器,则无法知道InputSlotInputSlotClassInstanceDataStepRate的值应该是什么。这是一个数据绑定与数据处理的问题。顶点着色器处理数据,但输入布局定义如何将数据馈送到着色器。

例如,查看着色器输入定义时,没有给出worldMatrix是每实例成员的指示(注释除外)。事实上,它不是必须的--你可以使用相同的顶点着色器代码,很容易地创建一个输入布局和顶点缓冲区绑定,这使得它不是每个实例的数据。

或者,可以在着色器代码中创建语义命名约定,以指定输入布局的值变为实例化的值及其实例化前进速率。例如:

代码语言:javascript
复制
matrix worldMatrix : WORLDMATRIX_INSTANCED_1_1;

通过解析语义,你可以得到它是实例化的,输入时隙和步速。然而,这样的方案可能会带来比其价值更多的麻烦。在某些情况下,您需要知道您拥有哪些输入数据,以及如何将其绑定到您编写的着色器,从而决定输入布局。

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

https://stackoverflow.com/questions/42388979

复制
相关文章

相似问题

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