Registriert: Fr Dez 28, 2007 20:24 Beiträge: 62 Wohnort: Berlin
Ich habe hier einen Quelltextauszug der einen Würfel zeichnet und alle 8 Seiten mit einer Textur belegt, nämlich der gleichen. Wie bekomme ich es hin, dass ich jeder Seite eine andere Textur zuweise?
Hat das was mit TexID zu tun?
Und wie kann ich die Texturen "nach innen" kehren sodass sozusagen ein Raum aus dem Würfel wird?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
für das "nach innen kehren" musst du die reihenfolge, in der du die Punkte angibst, umdrehen (siehe auch glCullFace).
Um jeder seite eine andere textur zuzuweisen, musst du vor dem passenden glBegin auch noch ein glBindTexture aufrufen, mit dem ersten Parameter GL_TEXTURE_2D und dem zweiten dann die ID deiner Textur, die du von glGenTextures geholt hast.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Die Vorderseite, also die sichtbare Seite einer Fläche wird anhand der Reihenfolge der angebenen Punkte bestimmt.
Die Vorderseite ist diejenige Seite, bei der man, wenn man sie Betrachtet, die Punkte gegen den Uhrzeigersinn sieht. Der Anhang stellt also eine Vorderseite dar.
Wenn du nun eine Primitive, also z.B. dein Quad umdrehen willst, so musst du den letzten Aufruf von glVertex an den Anfang packen, den ersten ans ende und die beiden mittleren vertauschen.
Also aus
Eventuell solltest du die Texturkoordinaten nicht mitnehmen, also deren Reihenfolge nicht ändern, aber das musst du anhand deiner Szene entscheiden.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Du solltest deine pChar Behandlung umstellen. Die Delphi Strings haben eine unsichtbare Referenzzählung. pChar hingegen hat so etwas nicht. Wenn du jetzt einen String dynamisch zusammen baust dann existiert dieser nur Temporär. Wenn du dir eine Variable vom Typ String irgendwo speicherst dann behält Delphi diesen String, da die Referenzzählung verhindert, dass er gelöscht wird. Wenn du ihm aber direkt als pChar castest, dann geht er davon aus, dass der String nicht mehr benutzt wird und schmeißt ihn anschließend sofort wieder weg.
Das was du machen musst ist die Behandlung der Texte komplett auf String umstellen. Und nur dann wenn du den String als pChar benötigst solltest du ihn casten. Also Block.Txsides sollte ein String sein und erst bei IMG_Load castest du ihn als pChar. Ansonsten müsstest du dich selber um die Verwaltung der pChars kümmern. Also anlegen, befüllen und dann selber wieder frei geben. Und da sind Strings um ein vielfaches einfacher.
Wenn du dir das mal im Debugger anschaust sollten bereits in Zeile 7 deine ersten 5 Strings falsch sein. Wenn du zwischen der Zeile 6 und 7 noch einen String anlegen würdest, dann stünde die Chance sehr gut, dass Delphi den Speicherbereich deiner Strings überschreiben würde. Denn obwohl an den Adressen sich derzeit noch die "richtigen" Daten befinden sind die Bereiche wieder als Frei markiert und können belegt werden. Das es nicht zu Zugriffsverletzungen oder kryptischen Dateinamen kommt liegt nur daran, dass der Zeitabstand dazwischen günstig ist.
Mitglieder in diesem Forum: Google [Bot] und 4 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.