В моем образце DirectX9, когда я делаю следующие вещи, все работает нормально, и я получаю на экране желаемый вращающийся треугольник,
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
Но когда я пытаюсь сделать то же самое с помощью шейдеров, ничего не отображается.
D3DXMATRIXA16 matWorldViewProj = matWorld * matView * matProj;
constantTable->SetMatrix(g_pd3dDevice, "g_mWorldViewProjection", &matWorldViewProj);
//Vertex Shader snippet
Output.Position = mul(In.Position,g_mWorldViewProjection);
когда я сделал ниже изменения в вершинном шейдере
Output.Position = In.Position;
Я получаю статический треугольник, отображаемый на экране.
Что может быть вероятной ошибкой в моем коде/технике?
(профиль: vs
Output.Position = In.Position;
0 с использованием D3DXCompileShaderFromFile)
D3DXMATRIXA16 matWorldViewProj = matWorld * matView * matProj;
наD3DXMATRIXA16 matWorldViewProj = matProj * matView * matWorld ;
. Может быть, это помогает. - person Gnietschow   schedule 26.11.2012constantTable
при компиляции пиксельного шейдера. Таким образом, ваша матрица будет установлена только в шейдере пикселей. - person Gnietschow   schedule 26.11.2012constantTable
правильно. Что-то еще идет не так. - person control   schedule 26.11.2012