großer scrolltext im windowedscreen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: großer scrolltext im windowedscreen

Beitrag 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 :wink:
broozar
Beiträge: 97
Registriert: 08.03.2010 15:53
Wohnort: Berlin
Kontaktdaten:

Re: großer scrolltext im windowedscreen

Beitrag 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)
iMac 27" quad i7 radeon 4850 8gig ram
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: großer scrolltext im windowedscreen

Beitrag von Kaeru Gaman »

1. ja 2. bolle
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: großer scrolltext im windowedscreen

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: großer scrolltext im windowedscreen

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: großer scrolltext im windowedscreen

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
broozar
Beiträge: 97
Registriert: 08.03.2010 15:53
Wohnort: Berlin
Kontaktdaten:

Re: großer scrolltext im windowedscreen

Beitrag von broozar »

nur mal interessehalber, flimmern bei euch auch hörmis und RSbasics codebeispiele unerträglich?
iMac 27" quad i7 radeon 4850 8gig ram
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: großer scrolltext im windowedscreen

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: großer scrolltext im windowedscreen

Beitrag von Kaeru Gaman »

broozar hat geschrieben:nur mal interessehalber, flimmern bei euch auch hörmis und RSbasics codebeispiele unerträglich?
nicht im Mindesten... :shock: ... 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: großer scrolltext im windowedscreen

Beitrag 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 ...
Zuletzt geändert von STARGÅTE am 09.07.2010 14:23, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten