Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Hallo FrenK
Die Texturkoordinaten sehen OK aus. Vermutlich hängt es an den Einstellungen in glOrtho. Wenn Du so arbeitest, dass der Koordinatenursprung oben links ist (was ich aus dem Vertex schließe) dann sollte die Einstellung in glOrtho so aussehen: glOrtho(0,ViewPort[2],ViewPort[3],0,+1,-1);
Noch etwas fällt mir auf: das Viereck ist rechtsherum definiert. Normalerweise sollten die OpenGL-Primitiven links herum definiert sein. Scheint aber hier nicht wichtig zu sein,
Traude
EDIT: Ich meine das so (bin heute auch nicht so gut drauf :
Registriert: Mi Jan 31, 2007 18:32 Beiträge: 150
Programmiersprache: Pascal
Ich benutze keinen loder, das ist kein bmp oder so. Die Zeichen werden einmal zur laufzeit gerendert und dann in der Texture mit glCopy... gespeichert von dher muss das Problem irgendwo beim übertragen in die Texture liegen da wie man oben sieht die Zeichen ursprünglich richtig herum sind.
um das Bild in eine Textur zu kopieren. Die Textur wird verkehrt angzeigt (oben und unten ist vertauscht).
Ich gehe jetzt mal ganz logisch vor. OpenGL hat normalerweise ein Koordinatensystem, dessen Y-Achse, wie in der Mathematik nach unten zu kleinere Zahlen hat und nach oben zu größere (soll heißen der Ursprung ist UNTEN links; aber eigentlich stimmt auch das nicht, der Ursprung ist dort, wo man ihn hinsetzt). Du hast es aber mittels glOrtho eingestellt wie in Windows: der Koordinatenursprung ist OBEN links. Ist ja auch die Standardeinstellung für den "Orthonormalbetrieb".
Für die Parameter x,y bei glCopyTexSubImage2D heißt es in der Originalspezifikation:
Zitat:
"Specify the window coordinates of the lower left corner of the rectangular region of pixels to be copied."
Auf deutsch: "Gibt die Fensterkoordinaten der linken unteren Ecke des rechteckigen Bereiches der zu kopierenden Pixel an."
(ich zitiere hier absichtlich die Original-Spezifikation und nicht unser WIKI, denn dort steht m.E. etwas, was aussieht als wenn es von der Spezifikation von glCopyTexSubImage1D kopiert worden wäre).
Jetzt haben wir aber oben und unten vertauscht mittels glOrtho.
Ich schlage daher vor, dass Du mal im glCopyTexSubImage2D für x,y die Parameter 0,0 eingibst. Bitte sei so nett und gib Bescheid, ob das jetzt die richtige Lösung ist oder nicht.
@Flash: Ich seh mir mal die ganzen glCopyTexImage.... Beschreibungen an. Aber erst morgen.
Traude
Registriert: Mi Jan 31, 2007 18:32 Beiträge: 150
Programmiersprache: Pascal
Dann bleibt die Texture schwartz da sich im bereich von (0,0) -> (width,height) nix befidet...
Das Problem ist ja das ich praktisch wie in der Spezifikation die Ecke unten links angebe und dann um width/height nach oben gehe er je doche die erste Zeile von der Ecke aus "oben" in der Texture ablegt und nicht unten wenn man das so weiterführt passt das erhaltenen Ergebnis ja schon.
Die frage die nun aufkommt ist aber wie bekomme ich es hin dass er wenn er von unten links ausgeht auch unten links in die Texture schreibt??
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ich habe mir mal so ein Programm gebastelt. Folgendes habe ich gemacht:
1. Lossys glBitmap verwendet und zwei Texturen damit geladen.
Eine Textur war eine Texture-Font (siehe unten), und die zweite war eine Art Wassertextur; gleiche Größe, gleiches Pixelformat: 256X256, 24bpp. Lossy ist dafür bekannt, dass er großen Wert darauf legt, den Koordinatenursprung immer oben links anzusetzen.
4.Dann habe ich einen Teil der Font-Textur richtig herum in die Wassertextur kopiert (auch glCopyTexSubImage2D kann jetzt davon ausgehen, dass der Koordinatenursprung oben links ist):
Code:
glCopyTexSubImage2D(GL_TEXTURE_2D,0,
50,50,// Linke obere Ecke der Textur
0,0,// Linke obere Ecke des kopierten Bereiches
128,128);// Breite/Höhe des kopierten Bereiches
Das Bild der ersten Textur und des Ergebnisses habe ich unten angehängt.
Traude
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.