DirectX i projection matrix

0

Ktoś mógłby mi wytłumaczyć co to jest projection matrix w kontekście rysowania w directx ?
Bo tak trochę tego nie rozumiem a coś czuje że to są podstawy podstaw ;)

Jezeli nic nie zrobię to po zainicjowaniu DirectX obraz ma wymiary 2x2
współrzędne wierzchołków obrazu wyglądają tak:

(-1, -1 ) (-1, 1)
(1, -1 ) ( 1, 1)

Jezeli teraz chciałbym na środku narysować mały prostokąt to musiał bym użyć np. takich wymiarów.

(0, 0) (0.5 ; 0);
(0; 0.5) (0.5 ; 0.5);

Jak zmusić DirectX aby okno w którym ryzuje za pomoca directX miało wymiary 640x480 ?
lewy górny róg (0,0)
prawy dolny róg (639,479)
A potem narysować sobie prostokąt gdy podam współrzędne

(100,100) (200,100)
(200,100)(200,200)

?

Eksperymentowałem z funkcją

D3DXMatrixOrthoOffCenterLH( g_matProj, 0,640,0,480,-2000,2000 );
g_pd3dDevice.SetTransform( D3DTS_PROJECTION, g_matProj );

Hmmm ale nie skutecznie

Ktoś może mi podpowie jak zrozumieć "projection matrix" ?

Aha w załączniku mój kod , wyświetlam teksture z pliku

0

Ja sobie pomogłem przy OpenGLu tym: http://www.songho.ca/opengl/gl_transform.html
W sumie filozofia DirectXa podobna powinna być.

0

Dziękuje za linka
przynajmniej się dowiedziałem czym sa poszczególne kolumny chociaż

chociaż nadal nie rozumiem jak mam

World
1,00 0,00 0,00 0,00
0,00 1,00 0,00 0,00
0,00 0,00 1,00 0,00
0,00 0,00 0,00 1,00

Projection
0,00 0,00 0,00 0,00
0,00 0,00 0,00 0,00
0,00 0,00 0,00 0,00
-1,00 1,00 0,50 1,00

View
-1,00 0,00 0,00 0,00
0,00 1,00 0,00 0,00
0,00 0,00 -1,00 0,00
0,00 0,00 30,00 1,00

I punkt powiedzmy o współrzędnych (100,100) to gdzie on wypadnie ekranie

Jak obracam to mi sie zmienia
World
0,96 0,29 0,00 0,00
-0,29 0,96 0,00 0,00
0,00 0,00 1,00 0,00
40,24 49,04 0,00 1,00

Projection
0,00 0,00 0,00 0,00
0,00 0,00 0,00 0,00
0,00 0,00 0,00 0,00
-1,00 1,00 0,50 1,00

View
-1,00 0,00 0,00 0,00
0,00 1,00 0,00 0,00
0,00 0,00 -1,00 0,00
0,00 0,00 30,00 1,00

Jakaś zagadka :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1