Si je veux une vue orthograpique de la région (-10, -1), (- 2, -1), (- 2, -7), (- 10, -7) comment définir la vue et la projection matrices? (Je mets la matrice du monde à l'identité). J'ai essayé, mais ça n'a pas:Comment définir une vue orthographique dans xna?
worldMatrix = Matrix.Identity;
projectionMatrix = Matrix.CreateOrthographicOffCenter(-10,-2,-7,-1,-1.0f,100.0f);
viewMatrix = Matrix.CreateTranslation(1, -1, 0) * Matrix.CreateScale(400,-300,1);
Je supposais que cet ordre de transformation: (est-il exact?)
screenPoint = worldPoint*worldMatrix*projectionMatrix*viewMatrix
Ma motivation est que la ProjectionMatrix transforme la boîte de monde à normaliced coordonnées de l'appareil: (- 10, -1) -> (- 1,1), (-2, -1) -> (1,1), (-2, -7) -> (1, -1), (-10, -7) -> (- 1, -1) et je déplace alors ce carré d'unité vers le quatrième quadrant et le redimensionne à l'écran (800x600) pour retourner la direction y. Mais je fais des choses mal parce que je ne peux rien voir.
Résolu! Mon problème était que j'ai confondu la transformation de vue pour une transformation de viewport, c'est-à-dire mapper -1 .. 1 à l'écran. Mais les transformations de viewport sont plus récentes dans xna, elles sont implicites. Cette idée m'a beaucoup aidé. La solution s'est avérée être très simple: worldMatrix = Matrix.Identity; viewMatrix = Matrix.Identity; projectionMatrix = Matrix.CreateOrthographicOffCenter (-10, -2, -7, -1, -1.0f, 100.0f); – lgwest
Pouvez-vous mettre cela comme une réponse à votre propre question et la marquer comme la réponse afin qu'elle n'apparaisse pas dans la section "questions sans réponse"? – Jeff