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

Aktuelle Zeit: Mi Jul 16, 2025 15:38

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Font Problem
BeitragVerfasst: Do Mär 11, 2004 21:17 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich will einen Text mittels Fonts in OpenGL anzeigen. Dazu benutze ich die Font funktionen aus einen anderem Projekt (wo sie auch tadellos funktionieren):

Die Initialisierung:
Code:
  1. procedure TForm1.BuildFont;
  2. var Font: HFONT;
  3. begin
  4.      FontBase:= glGenLists(256);
  5.  
  6.      Font:= CreateFont( 16,
  7.                         0,
  8.                         0,
  9.                         0,
  10.                         FW_MEDIUM,
  11.                         0,
  12.                         0,
  13.                         0,
  14.                         ANSI_CHARSET,
  15.                         OUT_TT_PRECIS,
  16.                         CLIP_DEFAULT_PRECIS,
  17.                         ANTIALIASED_QUALITY,
  18.                         FF_DONTCARE or DEFAULT_PITCH,
  19.                         'MS Sans Serif');
  20.      SelectObject(DC, Font);
  21.  
  22.      wglUseFontBitmaps(DC, 0, 256, FontBase);
  23.  
  24.      DeleteObject(Font);
  25. end;

Die Ausführung:
Code:
  1. procedure PrintText(TextPosX, TextPosY: GLuint; Text: string; R,G,B :single);
  2. //Gibt den String in Text an der Stelle TextPosx, TextPosy in der Farbe, die RGB ergibt aus
  3. begin
  4.      glPushAttrib(GL_ENABLE_BIT or GL_DEPTH_BUFFER_BIT);
  5.  
  6.        glDisable(GL_DEPTH_TEST);
  7.        glDisable(GL_TEXTURE_2D);
  8.        glDisable(GL_LIGHTING);
  9.  
  10.        glMatrixMode(GL_PROJECTION);
  11.        glPushMatrix;
  12.  
  13.          glLoadIdentity;
  14.          glOrtho(0.0, UMain.Form1.ClientWidth, Form1.ClientHeight, 0.0, -1.0, 1.0);
  15.  
  16.          glMatrixMode(GL_MODELVIEW);
  17.          glPushMatrix;
  18.  
  19.            glLoadIdentity;
  20.  
  21.            glColor3f(R,G,B);
  22.  
  23.            glRasterPos2i(TextPosX, TextPosY);
  24.  
  25.            glPushAttrib(GL_LIST_BIT);
  26.              glListBase(Form1.FontBase);
  27.              glCallLists(Length(Text), GL_BYTE, Pointer(Text));
  28.            glPopAttrib;
  29.  
  30.            glMatrixMode(GL_PROJECTION);
  31.          glPopMatrix;
  32.  
  33.          glMatrixMode(GL_MODELVIEW);
  34.        glPopMatrix;
  35.  
  36.      glPopAttrib;
  37.      glColor3f(1,1,1);
  38. end;


Und hier der Aufruf:
Code:
  1. procedure ShowNewGameMenue;
  2. // Zeigt Einstellungsmenue für neues Spiel
  3. begin
  4.      glBindTexture(GL_TEXTURE_2D,GVTextures[2].TextureID);
  5.      glBegin(GL_QUADS);
  6.          glTexCoord2f(0,1); glVertex3f(-3,-2.1,0);
  7.          glTexCoord2f(1,1); glVertex3f( 3,-2.1,0);
  8.          glTexCoord2f(1,0); glVertex3f( 3, 2.1,0);
  9.          glTexCoord2f(0,0); glVertex3f(-3, 2.1,0);
  10.      glEnd;
  11.      PrintText(50,50,GVGameInfos.Name,1,1,1);
  12. end;


Ich sehe aber nicht die Bohne Text in meinem Programm :!: Wo liegt der Fehler :?:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 21:51 
Offline
DGL Member

Registriert: Di Sep 30, 2003 22:22
Beiträge: 78
Wohnort: irgendwo in den Korridoren der Von Braun
Code:
  1. glDisable(GL_TEXTURE_2D);


aktivier mal GL_TEXTURE_2D bevor Du die DL aufrufst, Du verwendest ja Texture Fonts. Der Rest sah soweit in Ordnung aus...

-silk

_________________
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?" - Shodan


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 22:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich mache das ein wenig anders. Ich habe die Bitmap Fonts von openGL auch schon mal in einer Klasse gekappselt. Befindet sich auch im DGL-SDK und heißt glText.pas. Die kannst du erzeugen und dann musst du eine Position mittels glRasterPos oder glWindowPos (oder so. glaube ich jedenfalls) angeben und dann kannst du Text ausgeben.
Was ich auf keinen Fall empfehlen würde ist es so zu machen wie in dem Quellcode und für jede einzelne Ausgabe in den OrthoModus zu wechseln. Das ist recht aufwändig und vollkommen unnütz. Es würde ausreichen einmal in den Ortho zu wechseln alle 2D Ausgaben zu machen und dann wieder zurück.

Aber zu deinem Problem. Kann ich nichts sagen. Ich sehe auf jeden Fall nichts so gravierend ungewöhnliches. Evtl musst du beim zeichenen des Textes alle AttributBits Pushen. Das kann da auch ein Problem sein. Kann.

Evtl. solltest du mal ausprobieren ob du überhaupt sinnvoll ein Quad zeichnen kannst. Also an der Stelle wo sich momentan das glCallLists befinden. Einfach mal ein Quad rendern. Wenns da ist stimmt schon mal der OrthoModus.

@Silk: Er verwendet Bitmap Fonts. Da hat das schon seine Richtigkeit.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 11, 2004 23:29 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nee der Fehler war wieder vieeeel einfacher.... :oops:

Ich hab vergessen im Form Create BuildFont aufzurufen.

Damit is der ganze Thread hinfällig. Am besten ihr löscht den.
(Das kommt davon wenn man net komplett "copy pasted". :roll:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.011s | 15 Queries | GZIP : On ]