Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 19:26

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Re: String mit leerzeichen
BeitragVerfasst: Mi Jun 06, 2012 05:59 
Offline
DGL Member
Benutzeravatar

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.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: String mit leerzeichen
BeitragVerfasst: Mi Jun 06, 2012 08:16 
Offline
DGL Member
Benutzeravatar

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:
Code:
  1.  
  2. glCallLists(länge, type , zeiger)
  3. {
  4.    for(int x=0;x<(länge*sizeof(type));x+=sizeof(type))
  5.    {
  6.       Array(A)[(type) (zeiger + x)];
  7.    }
  8. }
  9.  


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

_________________
Meine Homepage


Zuletzt geändert von yunharla am Mi Jun 06, 2012 08:50, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]