Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
PWideChar hat zwei Bytes (deshalb deine Leerzeichen, das sind die Codepages afaik), glCallLists erwartet aber dass die Listen direkt Byte-An-Byte liegen. Du musst also einen 1-Byte Typ wie z.B. PAnsiChar / Ansistring nutzen.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
EWeiss hat geschrieben:
Sascha Willems hat geschrieben:
PWideChar hat zwei Bytes (deshalb deine Leerzeichen, das sind die Codepages afaik), glCallLists erwartet aber dass die Listen direkt Byte-An-Byte liegen. Du musst also einen 1-Byte Typ wie z.B. PAnsiChar / Ansistring nutzen.
Danke Sascha werde das gleich mal versuchen.
Edit: Habe es mal versucht keinen erfolg. Mit PAnsiChar wird nur das erste zeichen Dargestellt.
gruss
Er meint im Prinzip beides, stell dir deine Displayliste einfach als Array vor. Nehmen wir nun an du erstellst dein Array mit 256 Einträgen, dann darf auch ein Aufruf (glCallList) nur vom Index 0 bis 255 gehen. Wenn du nun dein Array(A) für jeden Eintrage eines weiteren Array(B) aufrufen (glCallLists) willst, dann gilt dies auch für jeden Eintrag in Array(B). Bei glCallList kommt nun hinzu das der Datentyp von Array(B) unbestimmt ist, daher wird erwartet das du sowohl die Anzahl der Einträge von Array(B) sowie die Größe eines Eintrages von Array(B) und einen Zeiger auf Array(B) übergibst. Sprich es sieht dann in etwa so aus:
Wenn du nun das ganze für eine DisplayListe der Größe 256 und einen Zeiger der auf den Wert 00FF00FF verweist, mit der Länge 2 durchspielst dann erhälst du: GL_UNSIGNED_BYTE: 0,255 GL_UNSIGNED_SHORT : 255,255 GL_2_BYTES: 0,255,0,255 GL_4_BYTES: 0,255,0,255, Fehler,Fehler,Fehler,Fehler (Bereich von Array(B) verlassen) GL_UNSIGNED_INT: 16711935, Fehler (Bereich von Array(B) verlassen, Bereich von Array(A) verlassen)
Für Texte muss nun das Encoding beachtet werden. Am häufigsten sind hier ASCII (1 Zeichen = 1 Byte) und UTF-8 (1 Zeichen = 1 int). Der Text "TMNT" ergibt nun den Speicher: ASCII: 54,4D,4E,54 UTF-8: 00,00,00,54,00,00,00,4D,00,00,00,4E,00,00,00,54
Mitglieder in diesem Forum: Bing [Bot] und 11 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.