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:

Doublebuffering Programm verschnellern

 
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



Anmeldungsdatum: 18.10.2004
Beiträge: 30
Wohnort: Mainz

BeitragVerfasst am: 11.11.2005, 19:06    Titel: Doublebuffering Programm verschnellern Antworten mit Zitat

Hey ihr!

Wie verschnellere ich dieses Programm?

Die Demo ruckelt ziemlich....

Ihr braucht net zu sagen "Benutz ne Lib", ich möchte
das selber machen zwinkern

Code:

REM *****************************
REM Double Buffering in SCREEN 13
REM *****************************
REM 2005 by Dj_Damy
rem ***************

DEFINT A-Z

DECLARE SUB Pixel (x, y, c)
DECLARE SUB Circ (x, y, radius, c)
DECLARE SUB ShowScreen (x1, y1, x2, y2)
DECLARE SUB ClearScreen (x1, y1, x2, y2)

CLS
SCREEN 13

DIM SHARED scr1(320, 50)
DIM SHARED scr2(320, 50)
DIM SHARED scr3(320, 50)
DIM SHARED scr4(320, 50)

REM ***************************** DEMOCODE *******************************

REM ********************
REM Datentyp deklarieren
REM ********************
TYPE WurmType
   x AS INTEGER
   y AS INTEGER
END TYPE

REM ***************
REM Array erstellen
REM ***************
DIM Wurm(10) AS WurmType

z# = 0

REM *************
REM Hauptschleife
REM *************
DO
   
   REM *******************
   REM Alte Grafik l”schen
   REM *******************
   ClearScreen 1, 1, 320, 200

   REM *********************************************
   REM Neue Positionen berechnen und Grafik zeichnen
   REM *********************************************
   FOR w = 1 TO 10

      z# = z# + .05

      Wurm(w).x = 160 + COS(z# - w / 4) * 50
      Wurm(w).y = 100 + SIN(z# - w / 4) * 50

      Circ Wurm(w).x, Wurm(w).y, 10, 31 - w

   NEXT w

   REM *******************************
   REM Grafiken im Backbuffer anzeigen
   REM *******************************
   ShowScreen 90, 30, 230, 170

LOOP WHILE INKEY$ = ""




SUB Circ (x, y, radius, c)
   FOR r = 0 TO (radius * 3.14) * 10 STEP 1
      Pixel x + (COS(r / 10) * radius), y + (SIN(r / 10) * radius), c
   NEXT r
END SUB

SUB ClearScreen (x1, y1, x2, y2)

   FOR y = y1 TO y2
      FOR x = x1 TO x2
         IF x1 > 0 AND x2 <= 320 AND y1 > 0 AND y2 <= 200 THEN
            IF y <= 50 THEN scr1(x, y) = 0
            IF y > 50 AND y <= 100 THEN scr2(x, y - 50) = 0
            IF y > 100 AND y <= 150 THEN scr3(x, y - 100) = 0
            IF y > 150 AND y <= 200 THEN scr4(x, y - 150) = 0
         END IF
      NEXT x
   NEXT y
 
END SUB

SUB Pixel (x, y, c)
   IF x > 0 AND x <= 320 AND y > 0 AND y <= 200 THEN
      IF y <= 50 THEN scr1(x, y) = c
      IF y > 50 AND y <= 100 THEN scr2(x, y - 50) = c
      IF y > 100 AND y <= 150 THEN scr3(x, y - 100) = c
      IF y > 150 AND y <= 200 THEN scr4(x, y - 150) = c
   END IF
END SUB

SUB ShowScreen (x1, y1, x2, y2)
   FOR y = y1 TO y2
      FOR x = x1 TO x2
     
      IF x1 > 0 AND x2 <= 320 AND y1 > 0 AND y2 <= 200 THEN
       
         IF y <= 50 THEN
            DEF SEG = &HA000: POKE x + (y * 320&), scr1(x, y): DEF SEG
         END IF
         IF y > 50 AND y <= 100 THEN
            DEF SEG = &HA000: POKE x + (y * 320&), scr2(x, y - 50): DEF SEG
         END IF
         IF y > 100 AND y <= 150 THEN
            DEF SEG = &HA000: POKE x + (y * 320&), scr3(x, y - 100): DEF SEG
         END IF
         IF y > 150 AND y <= 200 THEN
            DEF SEG = &HA000: POKE x + (y * 320&), scr4(x, y - 150): DEF SEG
         END IF
         
      END IF

      NEXT x
   NEXT y
END SUB



MFG,
Dj_Damy
_________________
http://djdamy.speed-codings.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


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

BeitragVerfasst am: 11.11.2005, 22:33    Titel: Antworten mit Zitat

Nettes Grundkonzept mit dem POKE :-) Zum Thema Animationen selber habe ich unter

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/ButterweicheAnimationen.html

meinen bekannten Animationsartikel (alles übrigens auch ohne irgendwelche Zusatz-Libraries).

Ich würde nach Möglichkeit schauen, mit SCREEN 7 zu arbeiten. Falls insgesamt 16 Farben genügen, aber Du die Palettentöne in VGA-Qualität setzen möchtest, dann lassen sich die Farben der DAC-Register mittels CALL INTERRUPT (andere werden jetzt wahrscheinlich auf OUT verweisen) setzen.

Kleines Beispielprogramm von mir, zum auf dieser Ebene herumspielen zu können:

http://beilagen.dreael.ch/QB/VGA_TEST.BAS

Schlussendlich könntest Du damit problemlos Deine feine Grauabstufung realisieren und hättest trotzdem auch PCOPY und SCREEN ,,x%,y% zur Verfügung.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
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: 11.11.2005, 22:51    Titel: Antworten mit Zitat

Zitat:

Nettes Grundkonzept mit dem POKE lächeln


Danke happy


Nein, 16 Farben reichen leider nicht, ich brauch die 256 Farben.

Das Programm brauche ich nicht nur für die Graustufentöne
für diese Grafikdemo, ich wollte das eigentlich benutzen
um endlich ein flimmerfreies Spiel in Screen 13 zu schreiben.
Der Stahlrücklauf mit WAIT &H3DA,8,8 funzt net wirklich.

MFG
Dj
_________________
http://djdamy.speed-codings.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 11.11.2005, 23:06    Titel: Antworten mit Zitat

Dj_Damy hat Folgendes geschrieben:
Der Stahlrücklauf mit WAIT &H3DA,8,8 funzt net wirklich.


durchgeknallt JetX-Award
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.11.2005, 23:18    Titel: Antworten mit Zitat

hehe,...genau grinsen


ich habe ganz gerne die Blast!Lib für double-buffering verwendet...

der synatx ist leicht gewöhnungsbedürftig, aber auch gut verständlich. diese "lib" is keine qlb, sondern qb-code (ASM).... is sehr gut!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dj_Damy



Anmeldungsdatum: 18.10.2004
Beiträge: 30
Wohnort: Mainz

BeitragVerfasst am: 11.11.2005, 23:24    Titel: Antworten mit Zitat

Zitat:

Dj_Damy hat Folgendes geschrieben:
Der Stahlrücklauf mit WAIT &H3DA,8,8 funzt net wirklich.


durchgeknallt JetX-Award


Ist daran irgendwas falsch?

MFG
DJ
_________________
http://djdamy.speed-codings.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 11.11.2005, 23:29    Titel: Antworten mit Zitat

Du kannst das ganz einfach schneller machen, in dem du auf Freebasic umsteigst. Da laufen meine alten grafikspiele viel zu schnell. Den code kannst du so (fast) beibehalten. Ich bin auch vor ner Zeit auf Freebasic umgestiegen, und das ist wirklich eine gute entscheidung gewesen. Aber ich denke mal eher, dass du bei QB bleibst, da du ja schon geschrieben hast, dass du keine anderen Libs verwenden möchtest. Auf ne andere Sprache umzusteigen ist ja sowas ähnliches.

Michael

P.S.: Link zur deutschen FB Seite
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 11.11.2005, 23:32    Titel: Antworten mit Zitat

Dj_Damy hat Folgendes geschrieben:
Zitat:

Dj_Damy hat Folgendes geschrieben:
Der Stahlrücklauf mit WAIT &H3DA,8,8 funzt net wirklich.


durchgeknallt JetX-Award


Ist daran irgendwas falsch?

MFG
DJ


das heisst STRAHLlrücklauf nicht STAHLrücklauf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Dj_Damy



Anmeldungsdatum: 18.10.2004
Beiträge: 30
Wohnort: Mainz

BeitragVerfasst am: 11.11.2005, 23:37    Titel: Antworten mit Zitat

Liegst schon richtig, ich will das in QuickBasic 4.5 coden.

Gibts nich irgendwas, was ich in dem Code verändern kann,
sodass es schneller läuft? PSET hab ich ja schon durch POKE
ersetzt, was kann man noch machen?

MFG
Dj

EDIT: @OdinX: Achso k sry
_________________
http://djdamy.speed-codings.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.11.2005, 23:55    Titel: Antworten mit Zitat

wie schon gesagr: wenn es keine eigenproduktion sein muss, würde ich die blast!lib verwenden....ist echt praktisch, weil sie nen sehr kleinen source hat und somit in jedes qb-projekt noch reinpasst!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dj_Damy



Anmeldungsdatum: 18.10.2004
Beiträge: 30
Wohnort: Mainz

BeitragVerfasst am: 12.11.2005, 00:08    Titel: Antworten mit Zitat

Doch, ich wills selber proggen
_________________
http://djdamy.speed-codings.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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