Камера необычного поведения, DX11 - PullRequest
0 голосов
/ 31 января 2012

Я пишу программу с использованием DirectX11, и я написал базовый класс камеры, который управляет матрицей вида.Когда я тестирую программу, получается, что сцена не двигается, но когда я перемещаю камеру, она обрезает то, что видно в произвольном месте.Я приложил несколько фотографий, чтобы показать, что я имею в виду.

Я оставил свой пиксельный шейдер на данный момент только с выводом красных пикселей.

Мой вершинный шейдер основан на примере SDK:

cbuffer cbChangeOnResize : register(b1) { matrix Projection; };</p> <pre><code>cbuffer cbChangesEveryFrame : register(b2) { matrix View; matrix World; }; struct VS_INPUT { float4 Pos : POSITION; float2 Tex : TEXCOORD0; }; struct PS_INPUT { float4 Pos : SV_POSITION; float2 Tex : TEXCOORD0; }; PS_INPUT TEX_VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; output.Pos = mul(input.Pos, World); output.Pos = mul(output.Pos, View); output.Pos = mul(output.Pos, Projection); output.Tex = input.Tex; return output; }

Я пару дней чесал голову об этой проблеме, но я не знаю, что вызывает это, или даже какие части кода актуальны.PIX показывает, что матрицы мира, вида и проекции, кажется, существуют и применяются, хотя очевидно, что что-то не так.

Спасибо.

Ответы [ 2 ]

1 голос
/ 31 января 2012

Вы можете использовать модификатор row_major вместо транспонирования матриц перед передачей их в шейдер

0 голосов
/ 31 января 2012

Математическая ошибка, я отправил матрицу представления вместо ее транспонирования в шейдер.

...