Frage

Ich versuche, ein Bild in einer openGL Umgebung anzuzeigen. Das Bild des origninal Dimensionen sind 3648x2432, und ich möchte es mit einem 256x384 Bild anzuzeigen. Das Problem ist, 384 nicht eine Potenz von 2 ist, und wenn ich versuche, es zu zeigen, sieht es gestreckt. Wie kann ich das Problem beheben?

War es hilfreich?

Lösung

ist es drei Möglichkeiten, dies zu tun, die ich kenne -

  • Der einzige Albert vorgeschlagen (die Größe, bis sie paßt).
  • Subdivide die Textur in 2 ** n große Rechtecke, und ein Stück sie zusammen in irgendeiner Weise.
  • Sehen Sie, wenn Sie GL_ARB_texture_non_power_of_two verwenden können. Es ist wahrscheinlich am besten, es jedoch zu vermeiden, da es sieht aus wie eine Xorg-spezifische Erweiterung ist.

Andere Tipps

Sie können Ihre Textur Größe ändern, damit es ist eine Zweierpotenz (Skew Ihre Textur, so dass, wenn es auf das Objekt abgebildet wird es richtig aussieht).

ARB_texture_rectangle ist wahrscheinlich das, was Sie suchen. Damit können Sie statt GL_TEXTURE_RECTANGLE_ARB GL_TEXTURE_2D binden, und Sie können ein Bild mit nicht Power-of-2 Dimensionen laden. Beachten Sie, dass Ihre Texturkoordinaten reichen wird von [0..w] x [0..h] statt [0..1] x [0..1].

Wenn GL_EXT_texture_rectangle wahr wird dann GL_TEXTURE_RECTANGLE_EXT zum ersten param in glEnable () und glBindTexture () aufruft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top