Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#2

AW: OpenGL (Tip) Mehrere Fontlisten erstellen

  Alt 8. Jun 2012, 03: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
  Mit Zitat antworten Zitat