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

Anonymous

unregistriert

1

14.08.2003, 13:05

probleme mit texturposition mit RHW-Datenformat

hallo,

ich habe vor, ein kleines Grafik-Adventure im Stile von Monkey Island zu programmieren.

Wie im Buch angegeben, verwende ich das RHW-Datenformat, um meine Objekte zu zeichnen. Beim ersten Durchlauf hab ich festgestellt, dass alle Objekte gespiegelt dargestellt werden. Klar, dacht ich mir, die Koordinaten beginnen ja auch in der linken oberen Ecke. Kurz mal die Eckpunkte der Vertizes vertauscht und schon wurden die Objekte richtig gezeichnet.

Problem 1: eine Textur bzw. das Bild, das die selbe Grösse wie die Auflösung hat, belegt nicht das ganze Fenster bzw. den ganzen Bildschirm, sondern z.B. in der y-Höhe nur die Hälfte.

Problem 2: ich möchte, dass mein koordinatensystem seinen ursprung links unten hat. Wenn ich also meinem Objekt die Position (0,0) gebe, dann soll sich die linke untere Ecke des Objektes bei den Bidschirmkoordinaten (0, Auflösungshöhe Y) befinden (eben die linke untere Ecke des Fensters oder Bildschirms). Abziehen der Y-Koordinate des Objekts von der y-Auflösungshöhe hat nicht das richtige Ergebnis gebracht.

irgendwie hab ich das gefühl, dass beide probleme dieselbe Ursache haben. Wie ich per Debugger rausgefunden habe, stimmen die Vertex-Daten für x,y,z,u,w jedoch. Wie berechne ich die Positionen der Vertizes am geschicktesten, um meinen Anforderungen gerecht zu werden ?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

14.08.2003, 13:09

Hi!

Zu Problem 1:
Man sollte nur Texturen verwenden, deren Breite und Höhe Zweierpotenzen sind, also 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 usw.. Du kannst auch auf einer 256x256-Textur viele kleinere Objekte unterbringen.
Texturen mit anderen Breiten und Höhen können Probleme machen, wie es wahrscheinlich bei Dir der Fall ist.

Zu Problem 2:
Denke daran, dass wenn Du den Koordinatenursprung woanders hin verlegst, sich auch die Reihenfolge der Vertizes auf dem Bildschirm verändert. Damit meine ich: aus Im-Uhrzeigersinn kann auf einem Gegen-den-Uhrzeigersinn werden, und dann wird das Dreieck weggecullt. Entweder Reihenfolge richtigstellen oder D3DRS_CULLMODE auf D3DCULL_NONE setzen.

Anonymous

unregistriert

3

14.08.2003, 13:46

vielen dank, die textur ist natürlich keine zweierpotenz gewesen (woran man nicht alles denken muss ;) ). ich hab gerade keine möglichkeit, das alles auszutesten, aber ich denke, das müsste funktionieren. bei eine der objekte/ texturen ist mir aufgefallen, dass sie doch richtig links unten positioniert ist. das verwendete Bild hat nur etwas viel freiraum. was bedeutet, dass meine berechnungen doch richtig waren (juhu).

im endeffekt bedeutet das aber dann, dass ich z.B. auch das Bild der Spielerfigur (und alle anderen Bilder) künstlich zu einer Zweierpotenz erweitern muss. Aus meinem 80 x 140 - Bild, wo der Spieler gezeichnet wurde, wird dann ein 256 x 256 - Bild, damit alles korrekt gezeichnet wird?

jetzt muss ich mir auch noch überlegen, wie ich eine funktionierende benutzeroberfläche programmiere - find ich schwieriger als alles andere. Leider schreibst du in deinem Buch nur, wie man deine GUI verwendet, nicht, wie sie funktioniert... irgendwelche tipps/links?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

14.08.2003, 13:50

Zitat von »"Anonymous"«

im endeffekt bedeutet das aber dann, dass ich z.B. auch das Bild der Spielerfigur (und alle anderen Bilder) künstlich zu einer Zweierpotenz erweitern muss. Aus meinem 80 x 140 - Bild, wo der Spieler gezeichnet wurde, wird dann ein 256 x 256 - Bild, damit alles korrekt gezeichnet wird?

Ja, aber Du kannst ja auch eine 256x256-Textur machen, wovon Du nur 80x140 Pixel benutzt. Du musst dann halt nur die Texturkoordinaten anpassen, so dass nicht die gesamte Textur gezeichnet wird, sondern eben nur der gewünschte Ausschnitt.

Zitat von »"Anonymous"«

Leider schreibst du in deinem Buch nur, wie man deine GUI verwendet, nicht, wie sie funktioniert... irgendwelche tipps/links?

Dafür war leider nicht mehr genug Platz. Vielleicht schaust Du Dir mal den Quellcode der TriBase-GUI-Engine an oder suchst mal bei Google?

Werbeanzeige