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

Aktuelle Zeit: Sa Jul 12, 2025 03:10

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: TExtausgabe mit TextSuite funzt net
BeitragVerfasst: So Nov 30, 2008 18:21 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

ichhab wieder mal n Problem mit der Textausgabe der TextSuite. Ich hab den Code fast 1 zu 1 aus meinem alten Projekt kopiert, aber irgendwie will es trotzdem nich. Hier ma die Codeschnipsel die von Bedeutung sind:
Code:
  1. //Font erzeuegen
  2. procedure TFont.CreateFont;
  3. begin
  4.   tsContextBind(fFontContextID);
  5.  
  6.   tsSetParameteri(TS_RENDERER, TS_RENDERER_OPENGL); CheckError;
  7.   tsSetParameteri(TS_CREATOR, TS_CREATOR_GDI); CheckError;
  8.   tsFontCreateCreator(pAnsiChar(fFileName), fWidth, fStyle, TS_DEFAULT, TS_DEFAULT, @fFontID); CheckError;
  9.   tsPostAddShadow4f(1,0,0,1,1,1,0);
  10. end;
  11.  
  12. constructor TFont.Create(FontContextID: tsContextID; Style: Cardinal; Width: Integer; FileName: String; Color: TVector4f);
  13. begin
  14.   inherited Create;
  15.   fFontContextID := FontContextID;
  16.   fStyle         := Style;
  17.   fWidth         := Width;
  18.   fFileName      := FileName;
  19.   fColor         := Color;
  20. end;
  21.  
  22. //Text ausgeben:
  23. procedure TFont.TextOut2D(Text: String; X,Y,Width,Height: Single; Align: Cardinal);
  24. begin
  25.   glEnable(GL_BLEND);
  26.   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  27.  
  28.   glEnable(GL_ALPHA_TEST);
  29.   glAlphaFunc(GL_GREATER, 0.1);
  30.  
  31.   glPushMatrix;
  32.     gltranslatef(x,y,0);
  33.     glBegin(GL_QUADS); //das Test-Quad wird gezeichnet, aber der Rest nich!
  34.       glVertex3f(0,0,0);
  35.       glVertex3f(0,Height,0);
  36.       glVertex3f(Width,Height,0);
  37.       glVertex3f(Width,0,0);
  38.     glEnd;
  39.  
  40.     glColor4fv(@fColor);
  41.     tsSetParameteri(TS_ALIGN, Align);
  42.     tsTextBeginBlock(0,
  43.                      0,
  44.                      round(Width),
  45.                      round(Height),
  46.                      TS_BLOCKFLAG_WORD_WRAP);
  47.       tsFontBind(fFontID);
  48.       tsTextOutA(PAnsiChar(Text));
  49.     tsTextEndBlock;
  50.     glBindTexture(GL_TEXTURE_2D,0);
  51.   glPopMatrix;
  52.  
  53.   glDisable(GL_BLEND);
  54.   glDisable(GL_ALPHA_TEST);
  55. end;
  56.  
  57. //Aufruf der TextOut2D Prozedur:
  58.   glMatrixMode(GL_PROJECTION);
  59.   glPushMatrix;
  60.   glLoadIdentity;
  61.   glOrtho(0,fViewport[2],fViewport[3],0,0,10);
  62.   glMatrixMode(GL_MODELVIEW);
  63.   glDisable(GL_DEPTH_TEST);
  64.  
  65.  
  66.   fPointFont.TextOut2D('Punkte: '+FillString(IntToStr(Points),'0',10),
  67.                        fViewport[2] *  1/100,
  68.                        fViewport[3] *  1/100,
  69.                        fViewport[2] * 98/100,
  70.                        fViewport[3] * 10/100,
  71.                        TS_ALIGN_LEFT);
  72.  
  73.   glEnable(GL_DEPTH_TEST);
  74.   glMatrixMode(GL_PROJECTION);
  75.   glPopMatrix;
  76.   glMatrixMode(GL_MODELVIEW);

Wäre cool, wenn da ma jmd drüber schauen könnte.

MfG Bergmann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 01, 2008 09:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Die Ausgabe sieht für meinen Geschmack ganz okay aus. Das Einzige was ich jetzt so gesehen hatte war, dass du die ModelView Matrix so belässt wie sie ist. Wenn du nach 2D wechselst wäre es evtl besser sie zurück zu setzen. Bzw solltest du da auch dafür sorgen, dass du nicht direkt an zNear den Text ausgibst. Also evtl -1 oder so in die Tiefe verschieben.

Wobei ich es komisch finde, dass das Quad da ist aber der Rest nicht. Evtl mal das Culling deaktivieren. Und stelle bitte sicher, dass die Datei die du Laden möchtest auch wirklich existiert. Wobei dann aber eigentlich ein Fehler gesetzt werden sollte. Bzw unter Delphi eine Exception ausgelöst werden sollte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 02, 2008 00:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
habs gefunden: ichhab vergessen die Prozedur die den Font erzeugt aufzurufen...*peinlich*
so gehts dann:
Code:
  1. constructor TFont.Create(FontContextID: tsContextID; Style: Cardinal; Width: Integer; FileName: String; Color: TVector4f);
  2. begin
  3.   inherited Create;
  4.   fFontContextID := FontContextID;
  5.   fStyle := Style;
  6.   fWidth := Width;
  7.   fFileName := FileName;
  8.   fColor := Color;
  9.   CreateFont;  //<-- HIER..
  10. end;

nochma sorry für die mühe, die ich gemacht hab...

MfG Bergmann.


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 1 Gast


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.008s | 17 Queries | GZIP : On ]