Я хотел бы использовать матричный стек для отслеживания преобразований в иерархической модели. Только облом, похоже, нет встроенного класса матричного стека, который я мог бы использовать для этого. Шаблоны 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.
Так я что-то пропустил или мне нужно написать свой собственный?