Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 11, 2025 04:55

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit Schriften (wieder mal)
BeitragVerfasst: Sa Feb 07, 2009 19:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Kurze Vorgeschichte:

Habe bis vor einiger Zeit Delphi7 durch eine erweiterte Schul-Lizenz genutzt, mittlerweile bin ich aus der Schule raus und nutze deshalb die kostenfreie Version von Turbodelphi 2006. Zeitgleich erfolgte durch einen Laptop-Kauf der Wechsel von WindowsXP zu WindowsVista. Nun gibt es aber ein Problem mit meinem Projekt.

Bei meinem alten Rechner wurden die Schriften alle korrekt angezeigt (ich nutze die Textsuite Komponente von LossyEx), aber auf dem neuen gibt es einige "Annomalien". Ich hänge dazu zwei Screenshots an, der erste zeigt das Hauptmenü, wenn ich das Programm aus Delphi heraus starte, da sieht man viele viele große Fehler bei den Schriften. Startet man das Programm direkt aus dem Windows Explorer sind nur noch kleine Fehler da (2. Screenshot - schaut auf das "i" von Turniermodus und das "a" von Hauptmenü).

Ich hatte mal ein ähnliches Problem bei dem mir zu tsPostAddShadow4f(1,0,0,1,1,1,0) geraten wurde, der Befehl wird auch weiterhin verwendet, löst aber die Probleme nicht.

Hoffe darauf, dass jemand mir weiterhelfen kann, wäre auch schön zu erfahren, ob es an der anderen Delphi Version liegt oder am Umstieg auf Vista.


Gruß

Basti


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 08, 2009 12:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Woraus du das Programm startest ist egal. Ich bastel die Texturen mit den Schriften immer zur Laufzeit zusammen. Und das hängt immer davon ab in welcher Reihenfolge die Buchstaben angelegt werden müssen. Selbst die kleinste Änderung kann dazu führen, dass die Buchstaben unterschiedlich angeordnet werden. So kann die Textur aussehen.
http://textsuite.opengl24.de/images/gallery/Texture.png

Und das Problem was du da hast entsteht durch die OpenGL Filterung der Texturen. Da die Zeichen direkt nebeneinander liegen verwischt das beim Filtern und man sieht so ganz leicht Pixel der Zeichen die in der Textur daneben liegen. Das mit dem unsichtbaren Schatten ist nur ein Trick um zwischen den Texturen etwas Platz zu schaffen. Das funktioniert nur wenn das bei allen Fonts/Zeichen der Fall ist. Weil es eben nur einen Trick ist. Eine richtige Lösung dafür gibt es noch nicht.

Eine Möglichkeit, dass du die Schrift nicht skalierst gibt es vermutlich nicht, oder? Ich muss da aber halt mal schauen, dass ich da was mache. Ich weiß noch nicht genau wann ich dazu komme. Aber ich mache da was. Hab auch schon eine Idee was man dafür machen muss.

PS: Bibliothek keine Komponenten. :P


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 08, 2009 13:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Okay, danke für deine Hilfe, die Skalierung wegzulassen wird wohl nicht gehen, aber ich schau noch mal, ob da was geht.

Was ich nicht versteh ist, dass du sagst es wäre egal woraus ich das Programm starte (habe ich aber bisher auch immer gedacht) auf den Screenis sieht man ja, dass es da Unterschiede gibt.

€: Textsuite=Bibliothek, Textsuite=Bibliothek, Textsuite=Bibliothek, Textsuite=Bibliothek, Textsuite=Bibliothek

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 08, 2009 13:46 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Kannst du die vom Programm generierten Font-Textur mal speichern und vergleichen?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 08, 2009 14:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Wie mach ich denn das mit TextSuite?

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 09, 2009 13:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Mal was am Rande. Hast du eigentlich einen ATI Grafikkarte mit einem Treiber zwischen der Version 7.9 und 8.4? Wenn ja updaten. Wenn nein vergiss die Frage.

Die Textur kannst du mit der TextSuite nicht erfragen oder so. Das Bild habe ich mit der glBitmap erstellt, da ich auch die interne ID der Textur gewusst habe. Dürfte bei dir aber eventuell etwas kompliziert werde. Aber mit der ID kannst du eine TglBitmap2D Instanz erstellen. ID zuweisen und dann GetDataFromTextur und anschließend SaveToFile.

Aber was die Texturen angeht kommt es wirklich einzig und allein nur darauf an in welcher Reihenfolge die Zeichen erstellt werden. Die geringste Änderung in der Reihenfolge oder der Größe der generierten Zeichenbilder (Schriftstil, Größe und Effekte beeinflussen die) sorgen dafür, dass die Texturen anders aussehen.

Was das eigentliche Problem angeht. Da bin ich bisher noch nicht dazu gekommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 09, 2009 17:12 
Offline
DGL Member

Registriert: Do Jun 28, 2007 17:58
Beiträge: 193
Programmiersprache: Pascal, C
Versuche 0,5 Pixel (!) zu den Texturkoordinaten hinzuzuaddieren.

_________________
http://audorra.sourceforge.net//http://andorra.sourceforge.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 10, 2009 09:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich muss gestehen die Textur von Oben ist nicht ganz richtig. Zur Verdeutlichung wo sich die einzelnen Zeichen befinden habe ich die Bilder der Zeichen jeweils 1 Pixel größer gemacht. Die originale Größe ist grau hinterlegt. Normal wären die aber dicht an dicht gedrängt. Und genau das ist ein Problem beim Skalieren. Größere Texturkoordinaten würden dort leider nichts bringen. Sondern es muss ein Rand um die zu skalierenden Zeichen. Denn dann würde der Texturfilter von OpenGL in den Rand interpolieren und nicht in das nächste Zeichen.

Das mit den Koordinaten würde aber an anderer Stelle etwas bringen. Und zwar wenn man größer skaliert. Dann wäre die Filterung nicht abgeschnitten sondern hätte etwas Spiel. Damit wäre zum Beispiel ein 'D' auch rechts noch schön rund. Was so schnell mal abgehackt wirken könnte.

Zusätzlich dazu gibt es aber noch ein anderes Problem was auf Texturenbasis eventuell zu einem Problem werden kann. Hat aber auch wieder mit dem Texturenfilter von OpenGL zu tun. Ins Detail will ich da jetzt nicht gehen. Allerdings das kann man nur lösen in dem man selber Hand an die Textur legt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 11, 2009 17:02 
Offline
DGL Member

Registriert: Do Jun 28, 2007 17:58
Beiträge: 193
Programmiersprache: Pascal, C
@Lossy eX
Ich bin mir jetzt nicht ganz sicher, ob du auf meinen Beitrag antwortest, aber das verschieben der Texturkoordinaten um 0,5 Pixel hat derartige Probleme in meiner Grafikbibliothek (die ich mit einer neuen Grafikkarte bekommen habe) gelöst. Von daher ist das Vorgehen vielleicht nicht ganz nutzlos. Siehe: http://msdn.microsoft.com/en-us/library ... 85%29.aspx

_________________
http://audorra.sourceforge.net//http://andorra.sourceforge.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 12, 2009 10:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Igel: Ja das war auf dein Post bezogen. Allerdings kann (und will) ich die Texturkoordinaten so nicht anpassen. Ich weiß, dass diese Grafikfehler dadurch entstehen, dass der Texturfilter zwischen 2 Texeln eine Art Mini Farbverlauft erzeugt. Und der sorgt dafür, dass die Farbe benachbarter Buchstaben in den Darzustellenden reinlaufen.

Ja. Deine Lösung würde funktionieren. Das stelle ich auch keines Wegs in Frage. Du würdest dann durch die Veränderung der Texturkoordinaten dafür sorgen, dass diese in der Mitte der Randpixel begrenzt würden. Ähnlich wie das beim Wrapmode CLAMP_TO_EDGE gemacht wird. Nur der Wrapmode begrenzt die Koordinaten wirklich in der Mitte der Randtexel. Durch das Verändern der Texturkoordinaten sind die letzten Randtexel aber kleiner als die Anderen. Und dadurch verschieben sich die Texel innerhalb des gesammten Quads. Das sorgt dann dafür, dass meine Textur nicht mehr Pixelgenau dargestellt wird. Bei klassischen Texturen mag das nicht auffallen. Allerdings bei einer Textur die extrem harte Kanten hat fällt so etwas schon auf. Und wenn es nur mir auffallen würde. Die pixelgenaue Darstellung ist mir dort aber wirklich sehr wichtig. Weil ich finde für wirklich anspruchsvolle Schriften gehört nun mal auch ein wirklich klares Schriftbild. Und das ist nur Pixelgenau möglich.

Oben drauf kommt das Problem, wenn man die Buchstaben deutlich größer darstellen würde, dann wären die so an einer Stelle abgeschnitten. Sind sie aber jetzt auch schon. Denn innerhalb des Buchstabens würde man die kleinen Miniverläufe gut sehen können. Aber an Rand hin wären diese abgeschnitten. Das liegt daran, dass eine Texelfarbe bis zum nächsten Texelmittelpunkt sichtbar wäre. Es wird aber nur bis zur Mitte zwischen 2 Texeln dargestellt. Das sorgt dann dafür, dass dieser Verlauf abrupt abbricht. Deswegen müsste ich die Buchstaben sogar mindestens 0.5 Texel größer zeichnen als sie eigentlich sind.

Das größer Zeichnen geht aber aktuell nicht da beim Hinzufügen eines großes H und D (Arial oder so etwas) diese direkt nebeneinander in der Textur liegen würden. Also die rechte Seite vom H und die Linke vom D wären genau 0 Pixel voneinander getrennt. Der unsichtbare Schatten hätte da für ein bisschen Luft gesorgt. Aber technisch gesehen liegen Zeichen ohne Schatten trotzdem genau an dem Bereich dran.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 12, 2009 22:04 
Offline
DGL Member

Registriert: Do Jun 28, 2007 17:58
Beiträge: 193
Programmiersprache: Pascal, C
In sofern hast du natürlich recht.
Mir ist auch aufgefallen, dass das Schriftbild bei meiner Engine in letzter Zeit nicht mehr so einwandfrei (= pixelgetreu) war. Siehe dieses Bild: Bild
Aber nachdem diese "Striche" weg waren, war ich einfach erstmal zufrieden. Ich probiere deine Vorschläge auf jeden Fall mal bei mir aus. Vielleicht hilft ein Abstand von einem oder mehreren Pixeln/Texeln zwischen den Buchstaben ja und hält das Schriftbild in Ordnung.

Danke für deine Ausführungen,

Andreas

_________________
http://audorra.sourceforge.net//http://andorra.sourceforge.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 13, 2009 17:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 23, 2007 18:03
Beiträge: 49
Wohnort: Dortmund-Scharnhorst
Sry, dass erst so spät was von mir kommt, bin derzeit beim Bund und kann erstmal nur am WE ins I-net.

Grafikkarte ist eine ATI Mobility Radeon HD 3470 Treiberversion 8.473.0.0, Windows meint das ist der neueste. Ich versuch dann mal die Textur abzuspeichern bzw. die Zeichenreihenfolge zu verändern, um da Verbesserungen zu erzielen.

_________________
Those who fear the dark never saw what light can do...

Bedecke deinen Himmel Zeus...

Fetter grüne du Laub...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 09:20 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich habe gestern eine Entwicklerversion der TextSuite auf meinen Server geladen. Diese enthält eine sinnvolle Möglichkeit mit der du deine Schriften skalieren können solltest.

Nähere Infos darüber im Projektthema der TextSuite.

http://www.delphigl.com/forum/viewtopic.php?p=69207#69207


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]