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

Aktuelle Zeit: Sa Jul 19, 2025 21:23

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Probleme mit Textsuite
BeitragVerfasst: Fr Nov 13, 2009 23:51 
Offline
DGL Member

Registriert: Mo Mai 25, 2009 21:29
Beiträge: 30
Hi,

ich habe mir die Textsuite von Lossy es heruntergeladen.
Dazu dann auch gleich noch die Beispiele.
Als ich so etwas jedoch einbauen wollte, hat es nicht so ganz geklappt:
Problem:
Textausgabe -> glCallList
Der Text wird ausgegeben, die Liste nicht.
Textausgabe mit sonst nix -> Nix wird ausgegeben

Hierzu etwas Quelltext:
Code:
  1. glNewList ( 1, GL_COMPILE );
  2. glBegin(GL_QUADS);
  3.  glTexCoord2f(0,0); glVertex3f(Displaywindow.w-200, Displaywindow.h, 0);
  4.  glTexCoord2f(1,0); glVertex3f(Displaywindow.w, Displaywindow.h, 0);
  5.  glTexCoord2f(1,1); glVertex3f(Displaywindow.w, Displaywindow.h-200, 0);
  6.  glTexCoord2f(0,1); glVertex3f(Displaywindow.w-200, Displaywindow.h-200, 0);
  7. glEnd;
  8. glEndList();  //So ziemlich die einfachst mögliche Liste

Code:
  1. procedure Render;
  2. begin
  3. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  4. glLoadIdentity;
  5.   tsTextColor3f(0, 0, 0);
  6.   // set align to center
  7.   tsSetParameteri(TS_ALIGN, TS_ALIGN_CENTER);
  8.   tsSetParameteri(TS_VALIGN, TS_VALIGN_CENTER);
  9.   tsTextBeginBlock(0, 0, 0, 0, TS_BLOCKFLAG_NONE);
  10.     tsFontBind(fFontID);
  11.     tsTextOutW('Test');
  12.   tsTextEndBlock;
  13. //glCallList(1); //-mal mit mal ohne
  14. end;

Auch scheinen die Zahlenparameter bei tsTextBeginBlock keine Auswirkung zu habe bei mir?
In der Demo allerdings schon.

Wo liegt mein Fehler?

Mfg.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Probleme mit Textsuite
BeitragVerfasst: Sa Nov 14, 2009 19:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das ist eine spannende Frage. Um ehrlich zu sein kann ich deinen Ausführungen auch nicht ganz folgen. Also Speziell "Textausgabe mit sonst nix -> Nix wird ausgegeben" verstehe ich nicht.

Die TextSuite muss beim Zeichnen ein paar OpenGL States verändern. Also zum Beispiel eine Textur binden. Diese ist nach dem Zeichnen immer noch aktiv. Also wenn du eine andere Textur vorher gebunden hattest, dann musst du diese nach der Textausgaben wieder aktivieren. Wenn du keine Textur haben willst, dann musst die diese anschließen deaktivieren oder TexturID 0 binden.

Bitte bedenke auch, dass du als TextColor 0,0,0 eingestellt hast. Also schwarz. Das ist einem glColor(0, 0, 0) gleich zu setzen. Also alles nanach ist dann auch schwarz. Entsprechen musst du eine andere Farbe setzen.

Zu den Werten bei tsTextBeginBlock. Da solltest du was anderes als 0, 0, 0, 0 angeben. Also wenn du 2D OpenGL hast dann wären das wahrscheinlich angaben in Pixel. Denn eine Breite von 0 würde dafür sorgen, dass beim dem ersten Leerzeichen umgebrochen würde. Eine Höhe von 0 würde dafür sorgen, dass alle Zeilen nach der ersten Zeile geklippt wären. Wenn du nur einzeilige Text ausgeben willst, dann kannst du auch tsTextBeginBlock und tsTextEndBlock auch verzichten. Dann genügt ein tsFontBind mit einem anschließenden tsTextOut*. Dann wird der Text an der Stelle ausgegeben die bei OpenGL als Ursprung gesetzt ist. Vertikale Ausrichten wird dort dann genau so beachtet wie sonst auch. Sollte das jetzt alles zu schnell gegangen sein, dann scheue dich nicht und frage nach. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Probleme mit Textsuite
BeitragVerfasst: Sa Nov 14, 2009 20:03 
Offline
DGL Member

Registriert: Mo Mai 25, 2009 21:29
Beiträge: 30
Ich beginne zu verstehen.
GlTextOut() funktioniert wie ein GlBindTexture() mit dem Text als Textur.
Denn wenn ich:
Code:
  1. glBegin(GL_QUADS);
  2.   glTexCoord2f(0,0);glVertex3f(0, 0, 0);
  3.   glTexCoord2f(1,0);glVertex3f(200, 0, 0);
  4.   glTexCoord2f(1,1); glVertex3f(200, 200, 0);
  5.   glTexCoord2f(0,1);glVertex3f(0, 200, 0);
  6. glEnd;
danach aufrufe, sehe ich den Text an der Stelle des Quads (in dem Beispiel auf dem Kopf).

Dann habe ich einfach etwas mit der Displayliste falsch verstanden.
Ich dachte sie würde die Textur mitsichern.

Mach ich es dann bei der Displayliste am besten mit:
Code:
  1. glNewList ( ZAHL, GL_COMPILE );
  2. glbindtexture(Meine Textur);
  3. Bla;
  4. glEndList();
?

Oder muss ich Texturen vor dem aufrufen der Liste binden? (Glaube nicht.)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Probleme mit Textsuite
BeitragVerfasst: So Nov 15, 2009 10:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Mortal-Shadow hat geschrieben:
GlTextOut() funktioniert wie ein GlBindTexture() mit dem Text als Textur.

Genau so ist das. Das du deinen Text siehst ist aber Zufall. Ich sammel in den Texturen die Zeichen der benutzen Fonts. Beim Zeichnen zeichne ich dann einzelne Quads auf denen teile der Texturen kleben. Die Texturen können zum Beispiel wie folgt aussehen.

Was deine andere Textur angeht. Das kannst du machen wie du magst. Du kannst die entweder in die DisplayListe mit rein packen oder aber auch außerhalb binden. Das Ergebniss ist das Selbe. Ich persönlich würde aber eher empfehlen, dass du sie Außerhalb bindest. Denn aktuellere Techniken wie VBOs erlauben nur das ablegen von VertexDaten. Und dann musst du deine Textur zwingend außerhalb binden.


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


Wer ist online?

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.

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