-
Forum: Multimedia
Delphi
by Lossy eX,
5. Jul 2008
Ich verstehe nicht ganz was du meinst! Aber du kannst die Codepage jederzeit setzen. Wenn ich sage jederzeit meine ich auch jederzeit. Du kannst vor jedem tsTextOutA eine andere Codepage setzen. Das geht auch innerhalb des Block Moduses. Denn ich konvertiere den Text sowieso in einen WideString. Und intern verarbeite ich außschließlich nur WideStrings. Weswegen die CodePage nur ein zusätzlicher...
-
Forum: Multimedia
Delphi
by Lossy eX,
4. Jul 2008
Ich habe das auch mal auf Windows 2000 ausprobiert und funktionierte ohne Probleme. Wobei ich da auch explizit mal via ProcessExplorer geschaut hatte. Meine Anwendung verwendet die usp10.dll nicht. Also nicht mal indirekt durch andere DLLs. Ich werde das heute Abend noch mal auf anderen System ausprobieren. XP ohne SPs und XP 64bit (wobei die Anwendung trotzdem 32 Bit bleibt). Allerdings denke...
-
Forum: Multimedia
Delphi
by Lossy eX,
3. Jul 2008
Danke für die Blumen. Ich habe ja jetzt per Zufall auch ein Speicherloch gefunden, als ich was nachgeschaut hatte. :) Und Fonts für OpenGL sind leider ein absoluter Missstand.
Die von dir geschickten Dateien funktionieren bei mir Problemlos. Die Datei usp10.dll ist bei mir vorhanden. "Uniscribe Unicode script processor" als Version "1.0420.2600.2180 (xpsp_sp2_rtm.040803-2158)" scheint also...
-
Forum: Multimedia
Delphi
by Lossy eX,
3. Jul 2008
Die Bibliothek unterstützt UCS-2. Das heißt alle Zeichen die einen Wert zwischen $0000 und $FFFF haben. $FFFF natürlich auch. $0000 kennzeichnet ein Stringende. Und dann natürlich nur die Zeichen die in dem Font enthalten sind. Woher soll ich die sonst auch herbekommen. CJK (Chinesich/Japanisch/Koreanisch) belegen einen ziemlich großen Bereich. Aber der ist trotzdem noch locker unter $FFFF. Und...
-
Forum: Multimedia
Delphi
by Lossy eX,
3. Jul 2008
Ein vollständiges Bitmapfont wird es nicht geben. Denn Unicode hat Platz für $10FFFF (1.114.112) Zeichen. Es sind aber nicht alle belegt. Das mit Abstand umfangreichste Font was ich kenne ist "Arial Unicode MS" mit 50.377 Zeichen. Was aber noch nicht alle definierten Zeichen abdeckt. Aber da mal eine kleine Rechnung. Textur ist 256x256. Ich denke da sind 16x16 Zeichen enthalten. Machen also 256...
-
Forum: Multimedia
Delphi
by Lossy eX,
2. Jul 2008
Ich denke nicht, dass es ein Fehler in der Bibliothek ist. ;)
String nach pWideChar ist scheinbar nicht richtig. Denn dann nimmt Delphi anscheinend den Pointer des Strings und castet diesen Stumpf nach pWideChar. Das hat dann zur Folge, dass die Zeichen verschmelzen. Es verschmilzt im übrigen auch das letzte Nullzeichen. Wenn das rein zufällig mit einem nicht Null Zeichen verschmilzt wird das...
-
Forum: Multimedia
Delphi
by Lossy eX,
2. Jul 2008
pWideChar auf pChar casten. Muss gestehen. Keine Ahnung ob Delphi da so schlau ist, weil eigentlich beides nur Pointer sind.
Also das Beispielcode was du da hast ist uralt. ;) Also das sind keine öffentlichen Klassen mehr und von den Funktionen her auch anders. Ein direktes Beispiel habe ich nicht, da ich damit andere Dinge zeigen will. Aber der nachfolgende Code sollte hoffentlich genügen....
-
Forum: Multimedia
Delphi
by Lossy eX,
2. Jul 2008
Man tut was man kann. ;)
tsTextOutA ist die ANSI Variante von tsTextOut.
tsTextOutW ist die Wide Variante von tsTextOut.
tsTextOutA macht intern nichts anderes als den Text mit der aktuellen CodePage in einen WideString zu verwandeln und damit dann tsTextOutW aufzurufen. tsTextOutW erwartet einen pWideChar. tsTextOutW ist die Funktion die du benötigst um WideStrings ausgeben zu können.
...
-
Forum: Multimedia
Delphi
by Lossy eX,
2. Jul 2008
Font: Das sind ganz normale Quads. Wenn du beim Zeichnen den Tiefentest deaktivierst werden sie über alles andere gezeichnet. Der Tiefentest könnte im übrigen auch dafür sorgen, dass einige Zeichen (wie in "COMMAND" zu sehen) links abgeschnitten werden. Falls dir Courier nicht gefällt musste mal im System schauen. Ich glaube "Lucida Console" sieht freundlicher aus.
Du kannst mit der Bibliothek...
-
Forum: Multimedia
Delphi
by Lossy eX,
2. Jul 2008
Du musst in deinem Programm auch eine Monospace (oder Fixed Width/Pitch) Schriftart benutzen. Bei der haben alle Zeichen die gleiche Breite! Sieht man bei dir schön am Wort "Title" dass es nicht so ist, denn der Buchstabe "T" ist genau so breit wie "it". Wenn du in der IDE eine andere Schrift benutzen würdest wäre es auch nicht richtig. Du brauchst dann halt noch ein Font wie zum Beispiel...
-
Forum: Multimedia
Delphi
by Lossy eX,
1. Jul 2008
Blockmodus: Ganz klar. Du hast in deinem Editor eine Monospace Schrift. Dort haben alle Zeichen die gleiche Breite. Mit der TextSuite aber nicht. Entsprechend ist das Leerzeichen schmaler als andere Zeichen.
Unbekannt.jpg: Ja diese kleinen Linien meinte ich mit mit den Fehlern. Und dafür war auch der Code. Warum der allerdings woanders so komisch wirkt ist mir ein Rätsel. Zur Not spiel mal mit...
-
Forum: Multimedia
Delphi
by Lossy eX,
1. Jul 2008
Bitmaps: Wenn es normale Bitmaps sind. Also wie die klassischen Bitmapfonts. Dann sollte es eigentlich auch ohne Blending gehen. Und für Texturen sollte man die blendfunc immer angeben.
-
Forum: Multimedia
Delphi
by Lossy eX,
1. Jul 2008
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...
-
Forum: Multimedia
Delphi
by Lossy eX,
1. Jul 2008
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...
-
Forum: Multimedia
Delphi
by Lossy eX,
1. Jul 2008
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...
-
Forum: Multimedia
Delphi
by Lossy eX,
30. Jun 2008
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...
-
Forum: Multimedia
Delphi
by Lossy eX,
30. Jun 2008
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...