AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TextSuite will nicht
Thema durchsuchen
Ansicht
Themen-Optionen

TextSuite will nicht

Ein Thema von EWeiss · begonnen am 30. Jun 2008 · letzter Beitrag vom 5. Jul 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
EWeiss
(Gast)

n/a Beiträge
 
#1

TextSuite will nicht

  Alt 30. Jun 2008, 18:01
Kann ich in TextSuite auf die gleiche art und weise wie mit
glPrintBitmap(10, PlaystateYPos, SongName, 1); Text ausgeben ?

Scheinbar nicht denn es wird nichts gerendert.
Habe mir mal das Sample SingleLine angeschaut dieses bassiert aber auf 'glOrtho'
Ich verwende aber 'gluPerspective'

mit kleinen änderungen wird mir der Text im Sample angezeigt aber auf den Kopf und nicht an der position wie ich sie gerne hätte.
Edit;
na gut das geht mit glScalef(1, -1, 1) dann stehts nicht auf den Kopf

In meinen Code geht gar nichts.
Ich benötige diese wegen UniCode da bei Bitmaps einige zeichen Fehlen und das ändern auf andere Sprachen zu aufwendig ist.

Delphi-Quellcode:
// setting color or with glColor
tsTextColor3f(1, 1, 1);
glEnable(GL_BLEND);

// activate large font
tsFontBind(fLargeFontID);

begin
  // set align to left
  tsSetParameteri(TS_ALIGN, TS_ALIGN_LEFT);
  glPushMatrix;
    glTranslatef(0, 0, 0);
    tsTextOutA(SongName);
  glPopMatrix;
  //glPrintBitmap(10, PlaystateYPos, SongName, 1);
end;
werd da irgendwie nicht schlau draus..
Die Initialisierung ist ok nur das rendern will nicht.
Denke ein ViewPort problem.
glTranslatef(0, 0, 0); soll eingentlich diese werte enthalten
glTranslatef(10, PlaystateYPos, 0); habe sie auf 0 gesetzt zum testen will aber nicht.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#2

Re: TextSuite will nicht

  Alt 30. Jun 2008, 19:49
Evtl solltest du auch noch erwähnen um was es sich handelt bzw einen Link darauf. Denn noch ist die Bibliothek recht unbekannt.

Mit der Version die ich auf meinem Rechner habe wird das Zeichnen einfacher, denn dann entfällt glPushMatrix und glPopMatrix. Allerdings ganz so einfach wie glPrintBitmap wird es nie werde, denn mein Augenmerk liegt auf Flexibilität und möglichst wenigs Einschränkungen.

Zu deinem Problem. Es handelt sich bei den Buchstaben um simple Quads. Aber Quads mit Größen von bis zu 20-25 OpenGL Einheiten. Das musst du beim Zeichnen berücksichtigen. sowohl in Position als auch in der Größe. Obendrein kommt hinzu, dass Bitmapfonts direkt in den Framebuffer gezeichnet werden wärend die Quads aus der TextSuite aber 3D sind. Ich würde empfehlen, wenn du 2D Schrift haben willst, dann solltest du vorher mit glOrtho in den 2D Modus wechseln. Und dann musst du auf die passende Einheiten achten. Wie in den Beispielen.

Im Zweifel bitte Fehler überprüfen. Dazu ist tsGetError und tsGetErrorFunction gut. Aber einige Teile der Hilfe sind noch nicht geschrieben bzw. werden noch umgebaut. Lokal bei mir.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: TextSuite will nicht

  Alt 30. Jun 2008, 20:46
@Lossy
Zitat:
Evtl solltest du auch noch erwähnen um was es sich handelt bzw einen Link darauf. Denn noch ist die Bibliothek recht unbekannt.
Ja hätte ich tun sollen

Ist klar das es nicht so einfach wie glPrintBitmap ist.
Das ist auch mein problem.

Mein problem
Ich möchte wie bei glPrintBitmap die x und y position zur 'gluPerspective' erhalten
bedeutet dass ich muss erst in den 'glOrtho' modus schalten und dann wieder zurück
so wie bei glPrintBitmap ?

Dachte ein einaches
Delphi-Quellcode:
glTranslatef(10, PlaystateYPos, 0);
tsTextOutA(SongName);
würde reichen scheint aber nicht so zu sein.. muss dann wohl noch selbst in
'glOrtho' wechseln um die Positionen zu setzen

Habe mit deinen SimpleLine example experimentiert aber die zeile hat sich
nie auf die von mir angegebene position gesetzt.

Vielleicht bin ich auch zu doof dafür

EDIT:
Damit das hier
Delphi-Quellcode:
glTranslatef(10, PlaystateYPos, 0);
tsTextOutA(SongName);
überhaupt funktioniert mache ich jetzt folgendes

Beide Funktionen kapsel ich in eine extra procedure.
Delphi-Quellcode:
procedure glPrintXY(x, y : GLFloat; fWidth, fHeight: GLFloat; text : pchar; fontset : tsFontID; Textalign: Integer);

begin
  tsFontBind(fontset);
  glDisable(GL_DEPTH_TEST);                // Disables Depth Testing
  glMatrixMode(GL_PROJECTION);                // Select The Projection Matrix
  glPushMatrix();                   // Store The Projection Matrix
  glLoadIdentity();                   // Reset The Projection Matrix
  glOrtho(0,640,0,480,-100,100);
  glMatrixMode(GL_MODELVIEW);             // Select The Modelview Matrix
  glPushMatrix();                   // Store The Modelview Matrix
  glLoadIdentity();                   // Reset The Modelview Matrix
  glTranslated(x, y, 0);                   // Position The Text (0,0 - Bottom Left)
  glScalef(1, -1, 1);
  tsSetParameteri(TS_ALIGN, Textalign);
  tsTextOutA(text);
  glMatrixMode(GL_PROJECTION);                // Select The Projection Matrix
  glPopMatrix();                   // Restore The Old Projection Matrix
  glMatrixMode(GL_MODELVIEW);                // Select The Modelview Matrix
  glPopMatrix();                   // Restore The Old Projection Matrix
  glEnable(GL_DEPTH_TEST);                // Enables Depth Testing

end;
und rufe sie hier auf
Delphi-Quellcode:
procedure TMainForm.FormPaint(Sender: TObject);
begin
  glClear(GL_COLOR_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45, ClientWidth / ClientHeight, 4, 256);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

  // setting color or with glColor
  tsTextColor3f(1, 1, 1);

  glPrintXY(15,
            13,
            ClientWidth,
            ClientHeight,
            'TextSuite Sample - Single Line',
            fLargeFontID,
            TS_ALIGN_LEFT);

  // Check for Errors
  CheckError;

  SwapBuffers(fDC);
end;
Delphi-Quellcode:
procedure TMainForm.FormResize(Sender: TObject);
begin
  if fInitialized then begin

    ReSizeGLScene(ClientWidth , ClientHeight);
    FormPaint(Self);
  end;
end;
Delphi-Quellcode:
procedure ReSizeGLScene(glsWidth : GLsizei; glsHeight: GLsizei);
begin
    If glsHeight = 0 Then // Prevent A Divide By Zero By
        glsHeight := 1; // Making Height Equal One

    glViewport(0, 0, glsWidth, glsHeight); // Reset The Current Viewport
    glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
    glLoadIdentity; // Reset The Projection Matrix
    gluPerspective(45, glsWidth / glsHeight, 1, 1000.0);
    glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
    glLoadIdentity; // Reset The Modelview Matrix

End;
Frage mich jetzt nur warum ich so einen umweg machen muss um den Text zu positionieren
Welchen vorteil hat dann die TextSuite wenn es nur so umständlich geht ?

Der gerenderte Text ist auch unansehnlich.
Oder was mache ich falsch das es so ist.

In 320x240 sieht man gar nichts obwohl der Font eine größe von 14 hat.
In 1280 ist zu groß und total unansehnlich.

gruss Emil
Miniaturansicht angehängter Grafiken
1280_726.jpg   320_942.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#4

Re: TextSuite will nicht

  Alt 30. Jun 2008, 23:14
Zitat:
Ich möchte wie bei glPrintBitmap die x und y position zur 'gluPerspective' erhalten bedeutet dass ich muss erst in den 'glOrtho' modus schalten und dann wieder zurück so wie bei glPrintBitmap ?
Nein. Ich mache das nicht. Werde ich auch nicht, denn das Ortho ist abhängig von Fenster was ich nicht wissen kann und es kostet Zeit. Mitunter sogar reichlich. Von daher solltest auch du das Pro gezeichnetem Frame auch nur ein einziges mal machen.

Aber wie gesagt. Stell dir die Zeichen als ganz normale Quads vor die an Stelle 0, 0, 0 gezeichnet werden. Wenn du dort ein Quad hinmalst wo der Text hin soll und es nicht erscheint ist was falsch. Ist es da sollte es richtig sein. Und immer auf Fehler prüfen. Hab ich geschrieben. Wenn irgendwas nicht stimmt mache ich nichts. Bzw setze nur einen Fehler. Evtl auch mal culling deaktivieren.

PS: Mag sein, dass es alles etwas kompliziert erscheint aber ich denke es hat durchaus seinen Sinn. Bzw das ein oder andere ist ja auch noch in arbeit um es einfacher zu machen.

Zitat:
Frage mich jetzt nur warum ich so einen umweg machen muss um den Text zu positionieren
Nichts für ungut aber so wie du das machst ist das bähhhh. Aber richtig. Habe ich oben geschrieben. Du setzt zu viele States und musst sie ständig wieder zurücksetzen. Schau dir die Beispiele an die in dem Packet dabei sein. Da setze ich nur die allernötigsten States. Und du solltest bei dir eine ganz klare Trennung zwischen Perspective und Ortho machen.

Zitat:
Der gerenderte Text ist auch unansehnlich.
Oder was mache ich falsch das es so ist.
Dazu kann ich nur ganz klar sagen JA. DU machst etwas falsch. Die Bibliothek ist in erster Linie auf Pixelgenaues zeichnen ausgelegt und glaube mir. Ich habe darauf geachtet! Mit glOrtho stellst du auch eine "Auflösung" ein. Und diese Einheiten sollten 1:1 sein, wenn du Pixelgenau arbeiten willst. Dann sieht der Text auch richtig aus. Wenn du die tatsächliche Auflösung doppelt so groß einstellst wie die OpenGL Einheit ist, dann wird ALLES auch doppelt si groß. Auch die Schrift und da kann die Bibliothek ja nichts dafür, oder?
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: TextSuite will nicht

  Alt 1. Jul 2008, 00:02
Zitat:
Nein. Ich mache das nicht. Werde ich auch nicht, denn das Ortho ist abhängig von Fenster was ich nicht wissen kann und es kostet Zeit. Mitunter sogar reichlich. Von daher solltest auch du das Pro gezeichnetem Frame auch nur ein einziges mal machen.
Na ja so einfach ist es nicht.
Kann es über eine Variable regeln und nur neu zeichnen wenn sich diese ändert
Aber selbst dann komme ich nicht drumherum sie mehrmals aufzurufen zum beispiel wenn das Window in der größe verändert wird.

Zitat:
Dazu kann ich nur ganz klar sagen JA. DU machst etwas falsch.
Deshalb meine Frage mit der anmerkung ob ich etwas falsch mache.
Denn wenn ich die Bibliothek (vorschaubilder) ansehe sieht das fantastisch aus.
Keine frage

Zitat:
Nichts für ungut aber so wie du das machst ist das bähhhh. Aber richtig. Habe ich oben geschrieben. Du setzt zu viele States und musst sie ständig wieder zurücksetzen. Schau dir die Beispiele an die in dem Packet dabei sein. Da setze ich nur die allernötigsten States. Und du solltest bei dir eine ganz klare Trennung zwischen Perspective und Ortho machen.
Daraus ersehe ich das es richtig ist.. oder was meinst mit bähhhh

Zitat:
Wenn du die tatsächliche Auflösung doppelt so groß einstellst wie die OpenGL Einheit ist, dann wird ALLES auch doppelt si groß. Auch die Schrift und da kann die Bibliothek ja nichts dafür, oder?
ja in glPrintXY habe ich eine andere auflösung
glOrtho(0,640,0,480,-100,100); würde ich diese auf die reale größe des Window einstellen
glOrtho(0,fWidth,0,fHeight,-100,100); dann verändert sich der text in der größe nicht.

Habe das Sample mal hochgeladen ..
Wenn du zeit findest kannst du es dir mal bitte anschauen.

gruss Emil
Angehängte Dateien
Dateityp: zip singleline_vcl_677.zip (54,2 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#6

Re: TextSuite will nicht

  Alt 1. Jul 2008, 10:14
Zitat:
Daraus ersehe ich das es richtig ist.. oder was meinst mit bähhhh
Okay. So im nachhinein muss ich gestehen war das etwas unglücklich formuliert. Ich meinte, dass es richtig bähh ist. Denn du hast ziemlich viele Matrixoperationen die vermutlich alle gar nicht nötig sind. Und um mal eine Hausmarke zu nennen. Vor 2-3 Jahren hatte ich mal was gemessen. In einer 3D Anwendung dann ein Mal in den Orthomodus gewechselt und wieder zurück. Sonst nichts. Und die FPS ging um ca. 10% runter. Keine Ahnung ob sich das heute noch genau so verhält aber ich denke ja.

Auch nicht vergessen solltest du, dass du noch eine GUI haben willst und wenn du noch 1-2 weitere Texte ausgeben willst, dann wechselst du mal eben locker flockig 4 Mal zwischen den Ansichten. Aber genau genommen würde auch folgendes ausreichen. Das ist jetzt auch ein Stück aus dem Anhang.
Delphi-Quellcode:
procedure TMainForm.FormPaint(Sender: TObject);
begin
  // Hier setzt du die Perspektive
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45, ClientWidth / ClientHeight, 1, 1000.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

  // Hier rufst du deine Visualisierung auf.
  ...

  // Hier ortho
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(0,fWidth,0,fHeight,-100,100);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();

  // Text ausgeben
  glPushMatrix; // leider in der version noch nötig aber ab der echten 0.8 nicht mehr
    glTranslate(...);
    tsTextOutA('Blahh');
  glPopMatrix; // leider noch

  // Text ausgeben

  // Gui zeichnen

  CheckError;
  SwapBuffers(fDC);
end;
Damit kommst du mit einem einzigen glOrtho aus. Und warum funktioniert das genau so? Weil du zu Begin des Zeichnens IMMER die Perspektive setzt. Wenn alles 3D fertig gezeichnet ist kannst du die Ansicht auf 2D umstellen. Aber du brauchst sie nicht speichern und wieder zurücksetzen. Warum auch? Bei nächsten Frame setzt du sie ja sowieso wieder. So wie es in dem Anhang ist funktioniert das sicherlich auch. Allerdings machst du viel viel mehr als überhaupt nötig ist. Du sicherst Dinge und stellst sie wieder her obwohl sie gar nicht mehr benutzt werden. Und mit jedem Text steigt der Aufwand.

Ich hoffe ich konnte es damit etwas besser verdeutlichen.

Zitat:
dann verändert sich der text in der größe nicht.
Mal anders gefragt. Was genau hast du vor? Der Text soll proportional zur Größe des Fensters bleiben? Das ist nicht ganz so einfach. Bzw kann man dort sehr schnell grafische Mängel bekommen. Denn bei dem Text handelt es sich um Texturen ohne MipMapping. Und das verhält sich wie jede andere Textur auch. Wird sie größer dargestellt wird sie weich und sieht mitunter nicht mehr so scharf aus. Wird sie kleiner dargestellt, dann liegen einige Texel auf dem selben Pixel und OpenGL nimmt dann irgendeines.

Obendrein kommt noch die Art meines Zeichnens hinzu. Diese ist für pixelgenaue Darstellung ausgelegt und bei Vergrößerungen kann es passieren, dass die Interpolation von OpenGL abgeschnitten wird bzw die Zeichen teilweise ineinander fließen. Aber das könnte man bei einfachen Texten mit einem kleinen Trick umgehen.

Ich sage nicht, dass es unmöglich ist. Sondern, dass es mit gewissen Risiken verbunden ist. Bzw in diesem Fall mit grafischen Einschränkungen. Denn es sieht nur wirklich richtig gut aus, wenn man Pixelgenau arbeitet. Und das ist nicht nur auf die Font Bibliothek beschränkt sondern ein generelles Problem. Deswegen wäre es vermutlich praktisch, wenn du mal genau sagst was du eigentlich damit vor hast.


PS: Im übrigen ist die Größe 14 nicht vergleichbar mit der Schriftgröße 14 innerhalb von Windows. Dazu müsste dieser Wert von logischen Pixeln auf die aktuellen DPI gerechnet werden.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: TextSuite will nicht

  Alt 1. Jul 2008, 14:14
Gut dann erkläre ich es nochmal ganz kurz
Zwei Bilder im Anhang ..

Wie du unten bei den Songnamen und der Zeit sehen kannst verwende ich ein FontBitmap
um die Texte auszugeben.
Bei beiden bildern kann man den Text noch erkennen.

Mein problem ist aber das man damit keine anderen Sprachen darstellen kann
da der Fontsatz innerhalb des Bitmap auf englisch ausgelegt ist.

Dazu möchte ich die TextSuite verwenden damit das möglich ist.
Die Bitmaps verändern sich ja auch proportional zur größe des Fensters.
Ja ich weiss das sind Bitmaps und kein text

gruss Emil
Miniaturansicht angehängter Grafiken
2_127.jpg   1_658.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#8

Re: TextSuite will nicht

  Alt 1. Jul 2008, 14:57
Da gibt es 2 Möglichkeiten. Entweder du setzt die Größe mit glOrtho auf einen fixen Wert (640x480). Wobei ich da aber noch auf das Seitenverhältniss achten würde. Da musst du dann aber mal testen welche Schriftgröße sich anbietet. 14 find ich zu wenig. Eher so etwas wie 21. Aber wenn die Schrift vergrößert werden muss wird es matschig. Oder wenn sie verkleinert wird dann wird sie pixelig. Das hast du bei deiner SchriftTextur jetzt auch schon. Je nach Größe und Font kommt das aber unterschiedlich stark zur Geltung.

Dann solltest du nach dem Erstellen des Fonts aber noch ein paar postprocesor hinzufügen. Die sind eigentlich nicht dafür gedacht aber sollte auch gehen.
Delphi-Quellcode:
  tsFontCreateCreator(...)
tsPostAddBorder4f(1, 1, 1, 1, 1, 0);
tsPostAddFillColor3f(1, 1, 1, TS_CHANNELS_RGB);
Die sorgen dafür, dass zwischen den Zeichen mehr Platz ist und dass der RGB Wert weiß ist. Sonst können am Rand leichte schwarze Streifen entstehen, wenn die Schrift vergrößert wird. Bzw Rundungen wären abgeschnitten. Gegen das Verkleinerungsproblem gibt es nichts.

Oder Alternativ setzt du die Schriftgröße ins Verhältniss und benutzt für glOrtho die Größe des Viewports. Sollte sich das Fenster in der Größe verändern, dann erstellst du es im Verhältniss kleiner oder größer. Dann wäre das bei Größenveränderungen zwar nicht 100%tig gleichmäßig aber die Schrift immer Pixelgenau und entsprechend gut lesbar. Denn das Fenster wird man normal nicht immer größer und kleiner machen. Ich persönlich würde da wohl die sauberere Schrift vorziehen. Aber diese Entscheidung liegt bei dir.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: TextSuite will nicht

  Alt 1. Jul 2008, 15:23
Danke für den Tip mit den Border..
Zitat:
Ich persönlich würde da wohl die sauberere Schrift vorziehen. Aber diese Entscheidung liegt bei dir.
Auf jedenfall eine saubere Schrift.

das Sample sieht jetzt schon mal besser aus.
Delphi-Quellcode:
procedure glPrintXY(x, y : GLFloat;
                    fWidth,
                    fHeight : GLFloat;
                    text : pchar;
                    fontset : tsFontID; Textalign: Integer);

begin

  tsTextColor3f(1, 1, 1);
  tsFontBind(fontset);
  tsSetParameteri(TS_ALIGN, Textalign);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(0,fWidth,0,fHeight,-100,100);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();

  glPushMatrix();
    glTranslated(x, y, 0);
    glScalef(1, -1, 1);
    tsTextOutA(text);
  glPopMatrix();

end;


procedure TMainForm.FormPaint(Sender: TObject);
begin

  glClear(GL_COLOR_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45, ClientWidth / ClientHeight, 1, 1000.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

  glPrintXY(15,
            13,
            Width,
            Height,
            'TextSuite Sample - Single Line',
            fLargeFontID,
            TS_ALIGN_LEFT);

  // Check for Errors
  CheckError;

  SwapBuffers(fDC);
end;
Kommt natürlich auch auf den Font an den man benutzt
Habe zum testen mal cyberbit.ttf genommen .. geht aber nicht als standard 12MB für einen Font ist schon arg

Sample Ok kann ich gut mit leben
Vis unidentifizierbare Blöcke von irgendwas
Da ist arg was daneben.
EDIT:
openGL error 1282

Bilder im Anhang

gruss Emil
Miniaturansicht angehängter Grafiken
vis_116.jpg   sample_185.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#10

Re: TextSuite will nicht

  Alt 1. Jul 2008, 16:27
Bei glPrintXY bitte ClientWidth und ClientHeight angeben. Das ist wichtig.

Der Fehler ist GL_INVALID_OPERATION. Da kann ich dir nichts sagen, da ich keinen Code sehe. Musste mal forschen was seit dem letzten mal passiert ist. Ich hätte jetzt auf deaktiviertem Blending getippt. Kann aber auch sein, dass du tsTextOutA in einem Bereich aufrufst wo das nicht erlaubt ist. Denn der erstellt beim ersten Aufruf eine Textur. Weil er Platz für die Zeichen braucht. Wenn das nicht geht kann das auch dazu führen.

Font: Du musst nicht unbedingt eines mit ausliefern. Du kannst die Bibliothek auch anweisen ein Font mit einem Namen zu benutzen. Wie das im Windows auch üblich ist. Also den Parameter TS_CREATOR auf TS_CREATOR_GDI_FACENAME und bei tsFontCreateCreator bei "filename", dann 'Arial' übergeben.

Aber eine kleine Warnung. Aktuell gibt es noch keine Möglichkeit fehlende Zeichen ausgleichen zu können. Der FireFox ist zum Beispiel in der Lage, bei einem Zeichen was in dem aktuellen Font nicht enthalten ist, sich dann in anderen Fonts zu bedienen. Mit anderen Worten. Das Dustimo Font ist zwar sehr schön und klein. Aber es enthält "nur" 373 Glyphen. Was aber schon viel mehr ist als andere freie Fonts bieten. Wenn du jetzt asiatische Zeichen damit darstellen wollen würdest, dann würde das nicht funktionieren, da du ausschließlich nur die in dem Font enthaltenen Zeichen zur Verfügung hast.

PS: Die benötigten Zeichen bleiben im übrigen auch so lange im Speicher der Grafikkarte bis sie gelöscht werden. Es könnte also von Zeit zu Zeit nicht unpraktisch sein mal die Zeichen zu löschen. Wobei ich gesehen habe, dass ich da vermutlich sogar noch nen Speicherleck habe. Das einfachste. Font löschen und neu erstellen dann sind sie in jedem Fall weg. Denn wenn du asitische Zeichen hast, dann gibts genügend Auswahl. Aber bei 10-15 Buchstaben pro Lied könnte das Stunden der Visualisierungen bedeuten um evtl. leicht etwas zu verbrauchen. Das dürfte vermutlich so nicht mal auffallen.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 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