Hi Leute,
ich versuche jetzt schon verzweifelt in meinem
OpenGL Spiel Text anzuzeigen, aber keine Möglichkeit, die ich gefunden habe, scheint zu klappen.
Schließlich bin ich
hier auf die TextSuite gestoßen. Und habe mich an
diese Anleitung gehalten, aber dennoch bekomme ich keinen Text angezeigt.
Hier mal ein bisschen Code:
Diese Funktion rufe ich einmal auf, und zwar nach dem initialisieren von
OpenGL:
Delphi-Quellcode:
procedure TKKOpenGL.textsuiteInitialisieren;
var failed:boolean;
begin
failed := false;
if tsInit(TS_INIT_TEXTSUITE) = TS_FALSE then
failed := true;
if tsInit(TS_INIT_OPENGL) = TS_FALSE then
failed := true;
if tsInit(TS_INIT_GDI) = TS_FALSE then
failed := true;
if failed then
ShowMessage('Fehler beim textsuite erzeugen');
tsContextCreate(@ContextID);
tsSetParameteri(TS_RENDERER, TS_RENDERER_OPENGL);
tsSetParameteri(TS_CREATOR, TS_CREATOR_GDI);
tsFontCreateCreatorA('C:\WINDOWS\Fonts\verdana.ttf', 512, TS_STYLE_NORMAL, TS_DEFAULT, TS_DEFAULT, @FontID);
//tsfontdestroy
// tsFontBind(FontID);
// tsSetParameteri(TS_ALIGN, TS_ALIGN_LEFT);
end;
Die Datei "C:\WINDOWS\Fonts\verdana.ttf" existiert; habe ich mittels FileExists(...) überprüft
Meine Textausgabefunktion:
Delphi-Quellcode:
procedure TKKOpenGL.schreibeText(text:string;x,y:integer);
begin
glTranslatef(x, y, 50);
tsTextOutA(PAnsiChar(text));
glTranslatef(-x, -y, -50);
end;
Meine
OpenGL Zeichenfunktion:
Delphi-Quellcode:
procedure TSpielverwalter.zeichne;
var ...
begin
og.beginRender;
//was vorher noch so getan werden muss, u.a. 2D Modus mit glOrtho
...
og.zeichneBild(1,64,128,feldbreite,feldbreite,30);
og.schreibeText('
Hallo Welt',64,64);
og.zeichneBild(2,64,296,feldbreite,feldbreite,30);
og.endRender;
//u.a. SwapBuffers(DC);
end;
Die Bilder werden Problemlos gezeichnet (glBegin(GL_QUADS); ...Vertexes setzen mit Texturen... glEnd; ),
aber von der Schrift sieht man nichts. Überdeckt von den Bildern ist sie auch nicht, da die Bilder als Tiefe 30 haben und die Schrift 50 haben müsste (glTranslatef(x, y, 50); )
Weiß jemand was ich falsch mache?