Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Cranberry

Treue Seele

  • »Cranberry« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

1

28.12.2013, 23:09

Objekte verzerrt bei 4:3 Auflösung

Hey Leute ich hab mal wieder ein Problem! :D
Und zwar will ich einen simplen Würfel in DirectX darstellen.
Das hab ich auch jetzt geschafft doch wie man sehen kann ist es nicht wirklich ein Würfel:

(Link)

Ändere ich die Auflösung von 800:600 auf etwas mit einem Seitenverhältnis von 1:1 wie z.b.: 600:600 dann passt alles und mir wird ein Quader mit gleicher Kantenlänge angezeigt, ein Würfel eben.
Ist das normal? Was kann ich dagegen machen? Muss ich jeden Vertex neu berechnen sodass jedes Seitenverhältnis unterstützt wird?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

28.12.2013, 23:13

Deine Projektion haut nicht hin. Du musst die korrekte Aspect-Ratio angeben. Zeig doch mal, wie du deine Projektionsmatrix aufbaust!

EDIT: So sollte das immer funktionieren:

C-/C++-Quelltext

1
XMMatrixPerspectiveFovLH(XM_PI * 0.25f, 800.0f / 600.0f, 1.0f, 1000.0f);


Wichtig ist der zweite Parameter, der gibt das Breite zu Höhe Verhältnis an. Die anderen Werte sind meine Standardwerte, vor allem 45° Sichtwinkel sind üblich.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TrommlBomml« (28.12.2013, 23:19)


Cranberry

Treue Seele

  • »Cranberry« ist der Autor dieses Themas

Beiträge: 312

Wohnort: Innsbruck, Tirol

  • Private Nachricht senden

3

28.12.2013, 23:19

Das dachte ich zuerst auch, aber irgendwie kann ich keinen Fehler entdecken.

C-/C++-Quelltext

1
m_ProjectionMatrix = XMMatrixPerspectiveFovLH(0.25f*3.14159265359, (float)m_pWindow->GetHeight() / (float)m_pWindow->GetWidth(), 1.0f, 1000.0f);

800/600 -> 0.75. Ob ich jetzt das ganze jetzt mit GetHeight/GetWidth berechne oder 0.75 angebe, macht keinen Unterschied das heißt die Werte von GetHeight/GetWidth stimmen.

Edit: ICH BIN SO DUMM :dash:
Der Beitrag kann auch gelöscht werden ist doch nur peinlich :D

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

28.12.2013, 23:20

Du machst Höhe durch Breite. Andersrum ;) Bei 1:1 fällt der Fehler nicht auf.

EDIT: So ein Quatsch, das passiert selbst dot :P. Manchmal sieht man den Wald vor lauter Bäumen nicht.

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

5

28.12.2013, 23:35

Deine Projektion haut nicht hin. Du musst die korrekte Aspect-Ratio angeben. Zeig doch mal, wie du deine Projektionsmatrix aufbaust!

EDIT: So sollte das immer funktionieren:

C-/C++-Quelltext

1
XMMatrixPerspectiveFovLH(XM_PI * 0.25f, 800.0f / 600.0f, 1.0f, 1000.0f);


Wichtig ist der zweite Parameter, der gibt das Breite zu Höhe Verhältnis an. Die anderen Werte sind meine Standardwerte, vor allem 45° Sichtwinkel sind üblich.


45° FOV?
Das ist aber verdammt wenig.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

28.12.2013, 23:39

Das Field of View ist bei dem Problem von CranBerry irrelevant. Ansonsten kenne ich üblicherweise 90° von anderen Beispielen. Ich arbeite immer mit 45°, weil ich das einfach so gewohnt bin und aus den meisten Büchern so kenne ;)

Werbeanzeige