1

我想使用矩阵堆栈来跟踪分层模型中的变换。唯一令人遗憾的是,似乎没有我可以用来执行此操作的内置矩阵堆栈类。Direct3D 模板只是跟踪模型、视图和投影矩阵,然后将它们传递给顶点着色器。

渲染器制作常量缓冲区:

CD3D11_BUFFER_DESC constantBufferDesc(sizeof(ModelViewProjectionConstantBuffer), D3D11_BIND_CONSTANT_BUFFER);
DX::ThrowIfFailed(
    m_d3dDevice->CreateBuffer(
    &constantBufferDesc,
    nullptr,
    &m_constantBuffer)
    );

顶点着色器变换每个顶点:

cbuffer ModelViewProjectionConstantBuffer : register(b0)
{
    matrix model;
    matrix view;
    matrix projection;
};

...
// Transform the vertex position into projected space.
pos = mul(pos, model);
pos = mul(pos, view);
pos = mul(pos, projection);
output.pos = pos;
...

我花了一些时间寻找一个内置的矩阵堆栈类,这样我就不必重新发明轮子,但我得到的唯一有希望的领先优势ID3DXMatrixStack似乎无法在 WP8 Direct3D 应用程序中访问。

所以我错过了什么还是我需要自己写?

4

1 回答 1

1

您将需要自己编写。ID3DXMatrixStack 接口与 Direct3D10 一起出现。

于 2013-05-03T01:04:17.693 回答