(Gast)
n/a Beiträge
|
AW: OpenGL (Tip) Mehrere Fontlisten erstellen
8. Jun 2012, 04:27
Habe noch zwei schwerwiegende probleme festgestellt..
Delphi-Quellcode:
procedure TFormMain.GenerateFontLists(Face: PWideChar; bold, italic: Bool;
out listsID: GLuint; deviation: single; var gmf: GLYPHMETRICSFLOAT);
var
CustomFont, oldfont: HFONT;
mBold: Integer;
begin
if bold then
mBold := FW_EXTRABOLD
else
mBold := FW_THIN;
CustomFont := CreateFont(round(-0.04 * Width), 0,0, 0, mBold, cardinal(italic),
0, 0, ANSI_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
FF_DONTCARE, face);
oldfont := SelectObject(h_DC, CustomFont);
if listsID > 0 then
glDeleteLists(listsID, 256);
listsID := glGenLists(256);
wglUseFontOutlines(h_DC, 0, 255, listsID, deviation, (Settings.fontDepth / 100),
WGL_FONT_POLYGONS, @gmf);
SelectObject(h_DC, oldfont);
DeleteObject(CustomFont);
end;
Delphi-Quellcode:
GenerateFontLists(PWideChar(Settings.lyricsFont.Name),
fsBold in Settings.lyricsFont.Style,
fsItalic in Settings.lyricsFont.Style,
ListsLyricsFont,
0.6,
gmfLyrics[0]);
Zum einen den Pointer für die listsID entfernt und " out" vorangestellt.
Hatte nicht berücksichtigt das der Font zwar richtig eingetragen aber die ID an ListsLyricsFont nicht zurückgegeben wurde.
Das hatte zur folge das beim nächsten Fontwechsel (erstellen einer neuen Liste) die alte nicht gelöscht wurde.
gruss
|
|
Zitat
|