До сих пор я получил куб без каких-либо преобразований (таким образом, он был визуализирован в орфографической перспективе), и я работаю над предыдущим кодом, чтобы получить его в перспективе, со всеми матриц. Я изменил гибкий формат вершин, чтобы не иметь RHW (таким образом, только с координатами и цветом XYZ, попробовал ARGB и XRGB, но я не думаю, что это важно), и я добавил функцию, которая устанавливает все матрицы.DirectX 9 не рендеринг после добавления преобразований
Debugging
показали, что матрицы создаются правильно, функции не возвращают правильно (насколько я мог видеть), не выходит из строя (DirectX никогда не будет жаловаться, если что-то пойдет не так, он просто не делает), и в общая пошаговая отладка не показывает паранормальной активности.
Существующий проект (который я изменить и в конечном итоге предотвратить от работы):
Как я продвигаюсь я также пишу учебники сортов, так что я могу вернуться и посмотреть, что я сделал в прошлый раз, чтобы заставить его работать, и это время я держал версии, так что вы можете получить код here наряду с решением VS2010, все DirectX работа выполняется в 3Dheader.h и D3DLoader.h
Изменения:
- пользовательский формат вершин FVF_CUSTOMVERTEX имеет был изменен, чтобы не включать RHW, поскольку я понимаю, что его нужно удалить, чтобы его вычислить Gh преобразования - В Render()
я добавить вызов функции setMatrices()
, которая делает всю матрицу и преобразовывать работу, и выглядит следующим образом:
void setMatrices()
{
//--------------transformation code----------------//
D3DXMATRIX objectM, translationM, rotationM, projectionM, lookAtM, finalM;
HRESULT hr;
D3DXMatrixIdentity(&objectM);
D3DXMatrixRotationY(&rotationM, D3DX_PI/4);
//D3DXMatrixMultiply(&finalM, &objectM, &rotationM);
D3DXMatrixPerspectiveFovLH(&projectionM,D3DX_PI/4,(float)yRes/xRes, 1, 100);
D3DXVECTOR3 camera;
camera.x = -10;
camera.y = 0;
camera.z = 0;
D3DXVECTOR3 cameraTarget;
cameraTarget.x = 0;
cameraTarget.y = 0;
cameraTarget.z = 0;
D3DXVECTOR3 cameraUp;
cameraUp.x = 0;
cameraUp.y = 1;
cameraUp.z = 0;
D3DXMatrixLookAtLH(&lookAtM,&camera,&cameraTarget, &cameraUp);
hr = pd3dDevice->SetTransform(D3DTS_WORLD, &objectM);
hr = pd3dDevice->SetTransform(D3DTS_PROJECTION, &projectionM);
hr = pd3dDevice->SetTransform(D3DTS_VIEW, &lookAtM);
D3DVIEWPORT9 view_port;
view_port.X=0;
view_port.Y=0;
view_port.Width=xRes;
view_port.Height=yRes;
view_port.MinZ=0.0f;
view_port.MaxZ=1.0f;
pd3dDevice->SetViewport(&view_port);
}
Примечание конечно, что не могут быть необходимы некоторые элементы, расположенные там просто в случае моих попыток это код, который у меня есть, поэтому у нас есть общая ссылка.
Заранее благодарим за любые ответы и/или попытки ответить.
Получить PIX-захват. Обычно будет ясно, что пойдет не так. В частности, посмотрите на вкладку сетки. – MuertoExcobito
Вы также изменили положение и размер вершин в кубе? Мировые космические координаты имеют разный масштаб, чем преобразованные координаты экранного пространства. –
@MuertoExcobito Не знаю, PIX даже существовал, ничего себе! Хорошо, вкладка Mesh на панели «Сведения» кажется единственной, с которой я могу получить информацию с моим текущим чтением, когда у меня выбрано «DrawIndexedPrimitives», в представлении Pre-Vertex Shader у меня есть рендеринг каркаса в post-VS абсолютно ничего, и viewport имеет две горизонтальные линии, которые, я полагаю, являются только границами окна. – user3079666