Seite 2 von 4
Re: großer scrolltext im windowedscreen
Verfasst: 24.04.2010 18:23
von Josh
broozar hat geschrieben:schon klar, nun erweiter das aber mal auf 800 zeilen. wäre das nicht kriechend langsam/rechenverschwendung?
also außer den credits brauchst du dann ja nicht mehr viel programmieren. ab zeile 50 sind wahrscheinlich 90% der programmbenutzer weg und die restlichen 10% spätestens bei zeile 200

Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 13:22
von broozar
is für ne anwendung, ne art vorgeschalteter launcher für ein spiel. danke für die vielen antworten, ich wollt eingentlich keinen fertigen code, sondern nur ideen, naja, habter mir die arbeit auch noch abgenommen, soll mir recht sein.
bitte beantwortet mir aber noch die eingangs gestellten fragen.
(1. unterliegen sprite3d in pb grafikkarten-texturlimits - 2. welche stückelung bei so großen bildern ist sinnvoll? 512^2 oder 1024^2 oder is das bolle - 3. wurde ausgiebig diskutiert)
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 13:27
von Kaeru Gaman
1. ja 2. bolle
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 14:40
von STARGÅTE
das einzig sinnvolle ist wirklich ein Array, oder Liste mit den Text-Zeilen, geziehlt, durchzuarbeiten und während der Laufzeit anzuzeigen.
Das heißt nur das was auch zu sheen währe wird angezeigt.
Texte auf ein Sprite zu packen ist in meinen Augen sinnfrei, weil es genau bei großen Texten viel Speicher frisst.
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 14:47
von Kaeru Gaman
nicht ganz sinnfrei:
man kann jeweils die Zeile erzeugen, die als nächstes ins Bild kommt,
und die die oben verschwunden ist wieder löschen.
mit einer großen Schriftart auf ein 2048x512 Sprite, daraus ein Sprite3D,
das verkleinert darstellen mit bilinearer Filterung gibt eine wunderschön weichgezeichnete Schrift.
den selben Effekt kann man natürlich auch erreichen, wenn man einzelne Sprites für einzelne Chars erzeugt,
die kann man dann auch im restlichen Programm noch verwenden.
das große Gegenargument gegen direktes Text-Drawing ist, dass man sich auf die Pixelgröße nicht verlassen kann,
die ist abhängig von den auf dem Zielsystem eingestellten DpI für die Anzeige.
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 14:59
von STARGÅTE
ich verwende schon lange nicht mehr LoadFont(), genau aus den genannten Gründen...
Code: Alles auswählen
; Lädt eine Font mit ClearTyp
Procedure LoadClearTypeFont(Name$, Size.i, Style=0)
Protected LogFont.LOGFONT
With LogFont
\lfHeight = -Size
\lfWidth = 0
\lfEscapement = 0
\lfOrientation = 0
If Style & #PB_Font_Bold : \lfWeight = 700 : Else : \lfWeight = 400 : EndIf
If Style & #PB_Font_Italic : \lfItalic = #True : Else : \lfItalic = #False : EndIf
If Style & #PB_Font_Underline : \lfUnderline = #True : Else : \lfUnderline = #False : EndIf
If Style & #PB_Font_StrikeOut : \lfStrikeOut = #True : Else : \lfStrikeOut = #False : EndIf
\lfCharSet = #DEFAULT_CHARSET
\lfOutPrecision = #OUT_DEFAULT_PRECIS
\lfClipPrecision = #CLIP_DEFAULT_PRECIS
\lfQuality = #CLEARTYPE_QUALITY
\lfPitchAndFamily = #DEFAULT_PITCH | #FF_DONTCARE
PokeS(@\lfFaceName[0], Name$)
EndWith
ProcedureReturn CreateFontIndirect_(@LogFont)
EndProcedure
Das - bei Size ist da, damit die Schift wirklich die Höhe in Pixel hat.
Auch ist dort ClearType aktiviert.
Wo ich noch zustimmen kann ist, das man sich von vorn herein eine "Sprite3D"-Font bastelt.
(Diese Thema hatten wir ja auch schon)
Dank dem ClipSprite3D aus dem englischen Forum, kann man blitzschnell große Texte darstellen und braucht dafür nur ein Sprite, welches die Zeichen enthält.
Dort kann man zusätzlich noch Font nehmen die "mehr Style" haben.
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 15:19
von broozar
nur mal interessehalber, flimmern bei euch auch hörmis und RSbasics codebeispiele unerträglich?
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 15:23
von Kaeru Gaman
oha.. yo LoadClearTypeFont ist natürlich eine wesentliche Verbesserung.
ist aber ja nicht Standard, deswegen sollte man schon auf die Probleme bezüglich des nativen LoadFont hinweisen.
Eine Spritefont muss nicht unbedingt als ein Gesamtsprite erstellt werden.
zum Einen wird das kompliziert, das lückenlos zu füllen wenn man nur die benötigten Zeichen implementieren will, man verschenkt zwangsweise Platz.
wenn jemand nur A-Z und 0-9 benötigt, braucht er auch nur 36 Zeichen zu laden.
zum Anderen ist es einfacher die Größe und Drehung anzupassen wenn man Einzelchars verwendet,
und ein kleiner skaliertes 128² oder 256² sieht einfach weicher und schöner aus.
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 15:26
von Kaeru Gaman
broozar hat geschrieben:nur mal interessehalber, flimmern bei euch auch hörmis und RSbasics codebeispiele unerträglich?
nicht im Mindesten...

... komisch was ist denn da bei dir los?
... aber bei mir bleibt der Text stehen, wenn man die Maus bewegt, also die Event-Bearbeitung ist so nicht richtig.
Re: großer scrolltext im windowedscreen
Verfasst: 25.04.2010 16:06
von STARGÅTE
Kaeru Gaman hat geschrieben:oha.. yo LoadClearTypeFont ist natürlich eine wesentliche Verbesserung.
ist aber ja nicht Standard, deswegen sollte man schon auf die Probleme bezüglich des nativen LoadFont hinweisen.
Eine Spritefont muss nicht unbedingt als ein Gesamtsprite erstellt werden.
zum Einen wird das kompliziert, das lückenlos zu füllen wenn man nur die benötigten Zeichen implementieren will, man verschenkt zwangsweise Platz.
wenn jemand nur A-Z und 0-9 benötigt, braucht er auch nur 36 Zeichen zu laden.
zum Anderen ist es einfacher die Größe und Drehung anzupassen wenn man Einzelchars verwendet,
und ein kleiner skaliertes 128² oder 256² sieht einfach weicher und schöner aus.
Wenn man ein Sprite3D Clipt, kann man das Sprite3D genauso weiter nutzen wie normale Sprite3Ds, der Clip bezieht sich nur auf die Textur und hat damit keinen einfluss auf größe oder drehung.
Hier mal eine Beispiel-Demo meiner Sprite3DFonts:
Sprite3DFont-Demo (ScrFont) *.exe
Sprite3DFont-Demo (ScrFont) *.zip
(Links aktuallisiert 9.7.2010)
Klar sieh man bei "bogenschirft" die sich zusätzlich ändert, (zB beim "e") das es leicht "hüpft" aber das bekommt man nie weg, weil DisplaySprite3D nur Integers will ...