Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

double buffering für screen 13

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Dj_Damy
Gast





BeitragVerfasst am: 18.10.2004, 11:57    Titel: double buffering für screen 13 Antworten mit Zitat

kann mir jemand sagen wie ich in screen 13 double buffering benutzen kann?

gruß dj_damy zwinkern
Nach oben
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 18.10.2004, 14:36    Titel: Schwierig Antworten mit Zitat

Hi !
Hmm...ohne Lib (z.B. DQB) ist das schwierig, aber bestimmt machbar.
Also wenn du nur nicht willst, dass deine Sprites flackern, dann setze ein WAIT &H3DA, 8 hinter den Befehl zu Sprite darstellen (z.B. PUT)
Wenn du tatsächlich mehrere Bildschirmseiten haben willst, dann kannst du auch den SCREEN 7 benutzen, der hat 7 Bildschirmseiten. Allerdings auch nur 16 Farben. Falls du dir ein Spiel oder so programmieren willst, rate ich dringenst zu DQB ! Da haste alles was du brauchst. grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thomas Antoni



Anmeldungsdatum: 12.10.2004
Beiträge: 220
Wohnort: Erlangen

BeitragVerfasst am: 18.10.2004, 15:59    Titel: Dazu habe ich mir für die QB-MonsterFAQ vorgemerkt... Antworten mit Zitat

--------------------------------------------------------------------------------

Frage:
--------
Wie realisiere ich 2 Bildschirmseiten in SCREEN 13?

Antwort:
--------
[ von Lebostein ( Lebostein@gmx.de ) im QB-Forum, 14.6.2003 ]


' QuickBasic mit "/L" starten wegen CALL ABSOLUTE!
SUB PageCopy (ax%, bx%, cx%, dx%)
DEF SEG = VARSEG(code$)
offset% = SADD(code$)
CALL ABSOLUTE(BYVAL ax%, BYVAL bx%, BYVAL cx%, BYVAL dx%, offset%)
END SUB
'
'Der kleine Assemblercode zum Kopieren von 64000 Bytes
DIM SHARED code$
RESTORE CopyData:
FOR i% = 1 TO 30
READ a$
code$ = code$ + CHR$(VAL("&H" + a$))
NEXT i%
CopyData:
DATA 1E,55,89,E5,8B,46,0E,8E,D8,8B,76,0C,8B,46,0A
DATA 8E,C0,8B,7E,08,B9,00,7D,F3,A5,5D,1F,CA,08,00
'
REDIM buffer1(31999) AS INTEGER 'Bildschirmseite 1
REDIM buffer2(31999) AS INTEGER 'Bildschirmseite 2
'
SCREEN 13
'
'Linie malen
LINE (0, 0)-(319, 199), 5
'
'den Bildschirm in den Buffer 1 kopieren:
PageCopy &HA000, 0, VARSEG(buffer1(0)), VARPTR(buffer1(0))
'
'Bildschirm löschen
CLS
'
'Von Buffer zu Buffer:
PageCopy VARSEG(buffer1(0)), VARPTR(buffer1(0)), VARSEG(buffer2(0)), VARPTR(buffer2(0))
'
'vom Buffer 1 in den Bildschirm kopieren:
PageCopy VARSEG(buffer2(0)), VARPTR(buffer2(0)), &HA000, 0
'
'Linie ist wieder da!!!!!!

--------------------------------------------------------------------------------
-------------------------------------------------------------------------------------

Frage
---------
Wie verwende ich mehrere Bildschirmseiten in SCREEN 13?

Antwort 1
---------
[ von Mario Zechner ("Marzec"; mariozechner@hotmail.com ) im QB-Forum, 22.4.2003 ]

Die Verwendung von zwei Bildschirmseiten, das so genannte Doublebuffering, ist im
SCREEN 13 prinzipiell kein Problem. Nur es funktioniert nicht so wie
beispielsweise im Screen 7, sondern Du mußt selbst einen Backbuffer
bereitstellen (Frage nicht warum; es würde zu lange dauern, das zu erklären) :



DIM buffer(31999) as INTEGER

... so und jetzt brauchst nur noch eine routine die den Inhalt in den VIdeoRam kopiert:

for Offset& = 0 to 63999
DEF SEG = VARSEG(buffer(0)
color = PEEK(Offset&)
DEF SEG = &HA000
POKE Offset&, color
next Offset&

zwei Probleme sind noch zu lösen:

+ vielleicht zu langsam?(uahhhhh)
+ hast Du Zeichen-Routinen die in den array buffer(0) zeichnen können?

normalerweise verwendet man für solche dinge bibliotheken (ugl, dqb, flib).
Oder Du beherscht assembler und implementierst die BufferCopy- sowie die
Zeichenroutinen (Line etc.) selbst.

Answer 2
---------
Es gibt im ABC-Archiv DUBBUF.BAS


--------------------------------------------------------------------------------
Code:

_________________
+++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5900
Wohnort: Deutschland

BeitragVerfasst am: 18.10.2004, 17:27    Titel: Page Flipping Antworten mit Zitat

Hallo.

Warum wollen eigentlich immer alle Screen 7 benutzen, wenn sie mit PCOPY arbeiten wollen?
Screen 9 bietet eine höhere Auflösung und bietet auch mehrere Bildschirmseiten. :fragezeichen:

Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 18.10.2004, 18:03    Titel: stimmt ja garnicht Antworten mit Zitat

Ich hab noch nie in meinem ganzen Programmier-Leben den SCREEN 7 benutzt grinsen
Ich weiß nur, dass der mehrere Bildschirmseiten hat.

Außerdem hatte ich eben voll die gute Idee mit den Augen rollen :
Mit RAMDRIVE erstellt man sich 2 Laufwerke mit je 125 Sektoren (125*512 = 64000). Und dann speichert man einfach mit BSAVE den Videospeicher aufs neu erstellte Laufwerk. Da das Laufwerk nicht Physisch ist, dauert das Lesen und Schreiben nicht länger als beim normalen RAM-Zugriff.
Und dann kann man mit BLOAD einfach den Kram in den Videospeicher zurückschreiben lassen.
Und die Methode verschwendet keinen Speicher, der QB zugesichert ist.
GENIAL, ODER durchgeknallt

Allerdings weiß ich nicht, ob diese Methode auch unter XP funzt..
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5900
Wohnort: Deutschland

BeitragVerfasst am: 18.10.2004, 18:36    Titel: XP Antworten mit Zitat

Hallo.

Bin mir ziemlich sicher, dass das unter XP nicht geht. traurig

Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2459
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 18.10.2004, 19:35    Titel: Antworten mit Zitat

Ich arbeite noch öfters mit SCREEN 7 bei solchen Projekten, wo Animation im Spiel ist.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 18.10.2004, 19:51    Titel: Re: Page Flipping Antworten mit Zitat

Hallo !

Sebastian hat Folgendes geschrieben:
Hallo.

Warum wollen eigentlich immer alle Screen 7 benutzen, wenn sie mit PCOPY arbeiten wollen?
Screen 9 bietet eine höhere Auflösung und bietet auch mehrere Bildschirmseiten. :fragezeichen:

Viele Grüße!
Sebastian


Also ich mag SCREEN 9 nicht, wegen des seltsamen Verhältnisses von der x- zur y-Achse. Bei SCREEN 7 oder 8 kann man die Verzerrung (1,2 bzw. 2,4 zu 1) noch im Kopf berechnen und mit 6:5 bzw. 12:5 ein quadratisches Raster erzeugen.

Gruss
Skilltronic
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 18.10.2004, 20:01    Titel: Stimmt Antworten mit Zitat

Da kann ich nur zustimmen
Versuch mal CIRCLE(10, 10), 10, 10 mit dem Kopf durch die Mauer wollen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dj_Damy



Anmeldungsdatum: 18.10.2004
Beiträge: 30
Wohnort: Mainz

BeitragVerfasst am: 19.10.2004, 10:42    Titel: schade... Antworten mit Zitat

dann werd ich wohl mit ner lib weiterarbeiten müssen
danke für eure antworten

greez Dj_Damy zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 24.10.2004, 13:27    Titel: Re: Stimmt Antworten mit Zitat

ICC hat Folgendes geschrieben:
Da kann ich nur zustimmen
Versuch mal CIRCLE(10, 10), 10, 10 mit dem Kopf durch die Mauer wollen


Wie meinst du das ? CIRCLE passt sich ja schon automatisch an den Bildschirm an und der Kreis wird rund. Das einzige Problem ist, dass der y-Radius durch eben diese Anpassung nicht mehr 10 Pixel beträgt. Das hast du aber auch bei allen anderen Bildschirmmodi ausser 12.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz