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

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

1

14.06.2009, 14:43

Quadratische Texturen

Bei laden eines Bildes (welches nicht quadratisch ist) wird der pixelarray so vergrössert das es zu einen quadratisches Bild wird.

C-/C++-Quelltext

1
2
psize = std::max(width,height)*std::max(width,height)*4;
pixels = new ubyte[this->psize];


Beim Anzeigen eines normalen Spriters wird dieser neue Bereich ja nicht angezeigt.(tranzperenter Bereich).

C-/C++-Quelltext

1
2
3
4
5
glTexImage2D(GL_TEXTURE_2D, 0, 4,
                            std::max(width,height),
                            std::max(width,height),
                            0, GL_RGBA,
                            GL_UNSIGNED_BYTE, pixels);


Und jetzt das Problem:
Wenn ich jetzt eine Textur hab z.b. eine Wand muss diese sich ja wiederholt anzeigen damit die ganze Wand voll damit ist.
Jetzt wenn ich aber den vergrößerten pixelarray hab dann wird ja der trazperente Bereich auch mit angezeigt.
Und das will ich nicht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

14.06.2009, 14:54

Beim Wiederholen kann man leider keinen Teilbereich des Bilds angeben.
Du könntest es mit einem Pixel-Shader machen und dort die Texturkoordinaten für jedes Pixel manuell berechnen (mit Modulo). Oder du skalierst das Bild auf die quadratische Größe statt nur einen transparenten Bereich dranzuklatschen.

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

3

16.06.2009, 12:16

Ich könnte ja auch keine quadratischen Texturen nutzen sonder nur das Original.
Aber wie würde das dann auf alten Opengl treibern aussehen da diese ja besser mit quadratische Texturen arbeiten können.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

16.06.2009, 22:25

Das würde ich lieber lassen - jedenfalls ohne Extensions zu benutzen. Ich habe das mal probiert, und auf einigen Computern lief mein Spiel dann ohne Hardwarebeschleunigung (also alles wurde in Software gerendert), und es wurde unerträglich langsam. Ich habe damals versucht, das automatisch herauszufinden (ob in Hardware gerendert wird oder nicht), aber keinen Weg gefunden.

Ansonsten guck dir mal diese GL_TEXTURE_RECT-Extension an. Damit müsste es ohne diese Probleme gehen.

Werbeanzeige