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

Matrix 我必须在WP8 Direct3D应用程序中实现自己的矩阵堆栈吗?,matrix,windows-phone-8,stack,directx,direct3d,Matrix,Windows Phone 8,Stack,Directx,Direct3d,我想使用矩阵堆栈来跟踪层次模型中的变换。唯一糟糕的是,似乎没有内置的矩阵堆栈类可以用来实现这一点。Direct3D模板只需跟踪模型、视图和投影矩阵,然后将其传递给顶点着色器 生成常量缓冲区的渲染器: CD3D11_BUFFER_DESC constantBufferDesc(sizeof(ModelViewProjectionConstantBuffer), D3D11_BIND_CONSTANT_BUFFER); DX::ThrowIfFailed( m_d3dDevice->C

我想使用矩阵堆栈来跟踪层次模型中的变换。唯一糟糕的是,似乎没有内置的矩阵堆栈类可以用来实现这一点。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;
...
我花了一些时间寻找一个内置的矩阵堆栈类,这样我就不必重新发明轮子,但我得到的唯一有希望的线索,似乎无法在WP8 Direct3D应用程序中访问


那么,我是否遗漏了什么,或者我需要自己写吗?

你需要自己写。ID3DxMatrix Stack接口与Direct3D10一起推出。

您需要编写自己的接口。ID3DxMatrix Stack接口与Direct3D10一起失效。

好吧,这应该不难,但我希望避免这项工作。谢谢好吧,这应该不难,但我希望避免工作。谢谢