Registriert seit: 24. Okt 2008
117 Beiträge
Turbo Delphi für Win32
|
AW: OpenGL - Text ausgeben mit TextSuite klappt nicht
6. Aug 2010, 21:22
hi, ich habe jetzt die Lösung von blackfin ausprobiert aber leider immer noch keinen Erfolg....
hier nochmal etwas mehr Code von mir:
Erzeugen:
Delphi-Quellcode:
function TKKOpenGL.init(pHandleUntergrund:THandle;pbreite,phoehe:integer):boolean;
begin
Result := InitOpenGL;
if not Result then
exit;
setLength(texturen,1);
fensterBreite := pbreite;
fensterHoehe := phoehe;
aktuellesBild := -1;
zoomFaktorX := 1;
zoomFaktorY := 1;
aktRotationsWinkel := 0;
HandleUntergrund := pHandleUntergrund;
DC:= GetDC(HandleUntergrund);
RC:= CreateRenderingContext( DC,
[opDoubleBuffered],
32,
24,
0,0,0,
0);
ActivateRenderingContext( DC, RC);
glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
//glClearColor(0, 0, 0, 0.0); //Schwarz
glEnable(GL_DEPTH_TEST); //Tiefentest aktivieren
glDepthFunc(GL_LESS); //Neue Fragmente bestehen den Vergleich, wenn sie einen geringeren Tiefenwert haben.
glEnable(GL_CULL_FACE); //Backface Culling aktivieren - Rückseiten werden nicht gerendert
glCullFace(GL_BACK);
glEnable(GL_ALPHA_TEST); //Transparenz
glAlphaFunc(GL_GREATER, 0.1); //alles mit einem größeren Alphawert als 0.1 wird gerendert
glEnable(GL_TEXTURE_2D); //Texturen zeichnen einschalten;
textVorbereiten;
end;
procedure TKKOpenGL.textVorbereiten;
begin}
CharLists := glGenLists(96);
// Schrift erzeugen
MyFont := CreateFont(-12, // Höhe der Schrift (12 Punkt)
0, // Keine durchschnittliche Breite, brauchen wir hier nicht
0, // Escapement, brauchen wir hier nicht
0, // Orientation brauchen wir hier nicht
FW_NORMAL, // Schrift-Dicke (normal, bold, bla...)
0, // Kursiv? 0=nein, 1=ja
0, // Unterstrichen? 0=nein, 1=ja
0, // Durchgestrichen? 0=nein, 1=ja
ANSI_CHARSET, // Character Set
OUT_TT_PRECIS, // Standard-Präzision
CLIP_DEFAULT_PRECIS, // Standard-Clip-Präzision
ANTIALIASED_QUALITY, // Render-Qualität => Antialiased
FF_DONTCARE or DEFAULT_PITCH, // Pitch und Schrift-Familie (Standard)
' Verdana' // Name der Schrift(-datei)
);
SelectObject(ContextID,MyFont);
wglUseFontBitmaps(ContextID,32,96,CharLists);
end;
Renderprozedur:
Delphi-Quellcode:
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glOrtho(0,fensterBreite,0,fensterHoehe,NearClipping,FarClipping); //2D erstellen, http://wiki.delphigl.com/index.php/Tutorial_2D
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
//hier male ich verschiedene Texturen, habe ich aber zu Testzwecken aus meinem Programm zurzeit entfernt
//Text schreiben
text := ' Hallo Welt';
glTranslatef(0,0,-10);
glColor3f(255,255,255);
glRasterPos2f(0,0);
glPushAttrib(GL_LIST_BIT);
glListBase(CharLists - 32);
glCallLists(Length(text),GL_UNSIGNED_BYTE,Pchar(text));
glPopAttrib;
SwapBuffers( DC);
Ich bekomme keine Fehlermeldungen, es wird einfach nicht angezeigt. Ich sehe nur den blauen Hintergrund von glClear
Hat jemand eine Idee?
Geändert von fui-tak ( 6. Aug 2010 um 21:25 Uhr)
|