我是否必须在WP8 Direct3D应用程序中实现自己的矩阵堆栈?

时间:2013-05-02 23:00:26

标签: matrix windows-phone-8 stack directx direct3d

我想使用矩阵堆栈来跟踪分层模型中的变换。只有无赖,似乎没有内置的矩阵堆栈类我可以用它来做到这一点。 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;
...

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

我错过了什么,或者我需要自己编写?

1 个答案:

答案 0 :(得分:1)

你需要自己编写。 ID3DXMatrixStack界面与Direct3D10一起推出。