Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   OpenGL undefinierbare zeichen (https://www.delphipraxis.net/169129-opengl-undefinierbare-zeichen.html)

EWeiss 30. Jun 2012 23:15

OpenGL undefinierbare zeichen
 
Habe das KaraGL Projekt auf Playliste umgestellt.
Erst jetzt habe ich bemerkt das nach dem abspielen des ersten Titel (alles normal) beim zweiten undefinierbare Zeichen auftreten.
Es sieht so aus als wenn hier in der Scenen an x-beliebiger position ein Gleichheitszeichen gezeichnet wird.
Und 1-3 Chars ersetzt.

Ich finde einfach nicht den ansatzpunkt woran das liegen könnte.
Es gibt einen crosspost auf DGL .. da scheint aber niemand einen Rat für mich zu haben.

Vielleicht hatte ja hier schon mal jemand mit einem ähnlichen problem zu kämpfen.
Im anhang kann man mein problem erkennen. Das "=" Zeichen :)

Es werden alle Arrays diesbezüglich ordnungsgemäß gelöscht hilf aber alles nichts.
Keine Ahnung wo das Teil herkommt.

gruss

Jens01 1. Jul 2012 12:15

AW: OpenGL undefinierbare zeichen
 
Versuchs mal mit Textsuite. Das ist eigentlich ganz einfach zu verstehen und läuft stabil.

blackfin 1. Jul 2012 15:55

AW: OpenGL undefinierbare zeichen
 
Mir fehlt hier eine wichtige Information:
Wie renderst du den Text denn genau über OGL?
Hab mir dein "KaraGL" gerade angeschaut, da sind ja aber die Sourcen nicht dabei.
Muss ja auch nicht, aber ich denke, da hat sich irgendwo ein ungültiges Zeichen / Index eingeschlichen, der dann als "=" ausgegeben wird, weil die Fontmap "übergelaufen" ist....oder etwas ganz anderes :-)
Kommt ja ganz drauf an, wie du den Text genau renderst.

EWeiss 1. Jul 2012 17:41

AW: OpenGL undefinierbare zeichen
 
@Jens01

Verwende ich ja aber nicht für CallList
habe keine Informationen darübergefunden das es damit funktioniert.

Delphi-Quellcode:
glNewList(ListsgLyrics + cardinal(cnt), GL_COMPILE);
  if (gLyrics[cnt].translatex < 0.0) then
     glTranslated(gLyrics[cnt].translatex, gLyrics[cnt].translatey, 0);

  for charcnt := 0 to Length(s) -1 do
  begin
    temp := copy(s, charcnt + 1, 1);
     tempc := temp[1];
     lineWidth := lineWidth + gmfLyrics[ord(tempc)].gmfCellIncX;
     glCallList(ListsLyricsFont + ord(tempc));
  end;
glEndList;
Wie soll ich hier die einzelnen Chars die an Calllist "ListsLyricsFont" übergeben werden
mit der TextSuite implementieren.?

@blackfin
Ich benutze wglUseFontOutlines und habe dafür extra nochmal ne neue Funktion geschrieben die einen stinknormalen TFont
anstelle CreateFont verwendet.
Delphi-Quellcode:
procedure GenerateFontLists(Face: PWideChar; Styles: TFontStyles;
  out listsID: GLuint; deviation: single; var gmf: GLYPHMETRICSFLOAT);
var
  CustomFont: TFont;

begin

  CustomFont:= TFont.Create();
  CustomFont.Name:= Face;
  CustomFont.Style := Styles;

  SelectObject(h_DC, CustomFont.Handle);
  listsID:= glGenLists(256);

  wglUseFontOutlines(h_DC, 0, 255, listsID, deviation, (Settings.fontDepth / 100),
    WGL_FONT_POLYGONS, @gmf);

   CustomFont.free;
end;
An der erstellung des Fonts dürfte es auch nicht liegen.
Die habe ich alle Durchgeprüft und bei allen das gleiche.

Was ich jedoch festgestellt habe das dieses Zeichen nichts mit "=" zu tun hat.
Denn nach einem Resitz des Freiraums zwischen den Zeilen positioniert sich mein TextBlock
wieder auf die richtige stelle.

Dann wird mir auch der Text angezeigt der eigentlich an der Stelle von "=" sitzt
aber Riesengroß ;)

Siehe Shot

wenn keine lösung gefunden ab in die Tonne

EDIT:
Hat sich erledigt das Thema trotzdem danke für die Ratschläge.

gruss

Jens01 2. Jul 2012 10:26

AW: OpenGL undefinierbare zeichen
 
Zitat:

Verwende ich ja aber nicht für CallList
Meinen wir dasselbe Textsuite?

EWeiss 2. Jul 2012 14:18

AW: OpenGL undefinierbare zeichen
 
Zitat:

Zitat von Jens01 (Beitrag 1173132)
Zitat:

Verwende ich ja aber nicht für CallList
Meinen wir dasselbe Textsuite?

Jo!
Ich verwende das schon seit Jahren ;)
Auf Bitmap Fonts ausgelegt.. Und ich verwende Outline für den LiedText
Ausgenommen FPS. Zeit, Misc da wird TextSuite verwendet.

gruss

Jens01 2. Jul 2012 15:50

AW: OpenGL undefinierbare zeichen
 
Ahh.. hatte das anders verstanden..


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz