Нужно ли мне реализовывать собственный матричный стек в приложении WP8 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;
...

Я потратил некоторое время на поиск встроенного класса матричного стека, чтобы мне не пришлось заново изобретать колесо, но единственный многообещающий вывод, который я получил, ID3DXMatrixStack, похоже, недоступен в приложении WP8 Direct3D.

Так я что-то пропустил или мне нужно написать свой собственный?


person Nico    schedule 02.05.2013    source источник


Ответы (1)


Вам нужно будет написать свой собственный. Интерфейс ID3DXMatrixStack вышел с Direct3D10.

person alanw    schedule 03.05.2013
comment
Ладно, это не должно быть сложно, но я надеялся избежать работы. Спасибо! - person Nico; 03.05.2013