schnellerer Bildschirmaufbau
-
wie würdet ihr vorschlagen, den bildschirmaufbau zu beschleunigen?
dh. dass dass ganze fenster ohne zucken aufgebaut wird.
DOS/Win32-Konsole:API?
ASM?
kann man den stdout auf einmal schreiben? dh. buffern?
Monitortreiber?
unter langsam verstehe ich:
- bildschirm mit API löschen
- bildschirm mit printf bzw. putchar etc. aufbauen
- bildschirm mit API löschen
- bildschirm aufbauen....
schnell wäre:
a) löschen - auf einmal aufbauen
b) auf einmal überschreiben
c) bildschirm in bereiche aufteilen - diese gleichzeitig füllenthanx 4 help
mfg (c)h
-
hi,
kommt drauf an was sich alles aendert. wenn es nur kleine stuecke sind ist sicher ein moveto() ganz gut oder asm.gruss
msp
-
Was willst du jetzt? DOS oder Win32? Unter DOS schreibst du einfach ins Video-RAM rein, das ist das schnellste. Unter Windows hast du halt ein API, das du verwendent musst, ob es dir gefällt oder nicht. Aber da gibt es so Funktionen wie z.B. FillConsoleOutputCharacter.
-
Video-RAM klingt verlockend ... wie geht das?
ja.. API ist auch gut - man gebe mir bitte funktionen - am besten zu BEIDEM;)
aber hmm.. sagen wir mal am folgenden BSP:
*************************************** *************MENU********************** *************************************** *** text1 ** *** text2 ** *** text3 ** ***************************************
das soll dann dastehen - möglichst kurze aufbauzeit... ... text 3 ändert sich...
mfg (c)h
-
gettext und puttext benutzen.
hast dann immer ein Char array, das doppelt so gross is wie die anzähl der kästchen die du bruahcst. in den zusätzlichen werden FarbInfos gespeichert.
es muesste jeder gerade index in diesem Array das character sein und das ungerade dahinter die farbinfo. so ein array kann natuerlich uach künstlich erzeugt werden *g*Viel spass beim rumspielen.
oh moment... war das C oder C++? >_>
-
welcher compiler, welche header?
mfg (c)h
-
Bist du tatsächlich in DOS oder benützt du die Win32-Konsole?
In der Konsole ist printf() der Haken. Benütze direkt WriteConsoleOutput() und schreibe den ganzen Schirm auf einmal raus, geht sehr schnell. Wenn sich nur Kleinigkeiten ändern dann ist es allerdings schneller nicht den ganzen Bildschirm zu löschen sondern per WriteConsoleOutput() nur an die bestimmten Stellen zu schreiben.
MfG SideWinder
-
@Sidewinder:
habs versucht:HANDLE console; COORD position={10,10}; COORD size={20,20}; PSMALL_RECT lpwriteregion; lpwriteregion->Bottom=0; lpwriteregion->Left=0; lpwriteregion->Top=10; lpwriteregion->Right=20; console=GetStdHandle(STD_OUTPUT_HANDLE); WriteConsoleOutput(console,(_CHAR_INFO*)"test",size, position,lpwriteregion);
so wirds wohl nicht gehen...
geht auch nicht...
welche parameter sind für was?mfg (c)h
PS: ich benutze Win32-Konsole...