In incercarea de a scrie un mic software renderer (ca un experiment) am dat peste o belea care se pare ca m-a cam rapus pana acum. Se pare ca dupa ce inmultesc vectorii cu matricea de proiectie imi da niste rezultate ciudate (de genul (-1, 1, 0.8siceva) pentru (0, 0, -1)) cand de fapt ar trebui sa-mi dea in pixeli. Uite si cum calculez matricea:
Cod sursă:
ProjMatrix := DS_IDENTITY;
ProjMatrix[0, 0] := 2 * n / (r - l);
ProjMatrix[1, 1] := 2 * n / (t - b);
ProjMatrix[2, 2] := -(f + n) / (f - n);
ProjMatrix[3, 3] := 0;
ProjMatrix[3, 2] := -1;
ProjMatrix[0, 2] := (r + l) / (r - l);
ProjMatrix[1, 2] := (t + b) / (t - b);
ProjMatrix[2, 3] := -2 * f * n / (f - n);
unde l, r, u si d sunt left, right, up si down iar n si f sunt clipping plane-urile. Am gasit modelul asta in mai multe locuri, deci tind sa cred ca e corect. Poate gresesc eu undeva. Any ideea ?