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:

Direkte Manipulation des Grafikbuffers möglich?

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



Anmeldungsdatum: 17.12.2011
Beiträge: 114

BeitragVerfasst am: 28.02.2012, 09:39    Titel: Direkte Manipulation des Grafikbuffers möglich? Antworten mit Zitat

Hi ich steh gerade vor einem kleinen Problem.

Ich wollte versuchen das eine Grafik eine Art Oldschool Welleneffekt Animation hat.
So in etwa wollte ich das umsetzen:

Hier ist es nur zum verständniss lächeln

A = Pixel

AAAAAAAAAAAAAAAAAAA -> einzelne verschiebungen
AAAAAAAAAAAAAAAAAAA <- rück verschiebung
AAAAAAAAAAAAAAAAAAA

Im Quick and Dirty Fall würde ich es so umsetzen das ich für jede zeile der
Grafik einen Buffer Image Createn müsste und diese dann mit Put (pos,pos)
verschieben müsste.

Kann ich nicht direkt auf den ImagePuffer der Grafik zugreifen und diesen mit ASM verändern? Also Pixels einzeln ansteuern ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 28.02.2012, 10:20    Titel: Antworten mit Zitat

zum Beispiel so...
Code:
Screen 19,32

Dim MyScreen as Integer PTR

MyScreen=cast(any ptr,Screenptr)

MyScreen[0] = &hFFFFFFFF

sleep

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 14.05.2013, 11:45    Titel: Antworten mit Zitat

Hallo, guten Tag.
Dieses ist schon ein alter Hut...
Aber noch einmal ein Frage.
Wenn ich in dieser Schleife "Sleep 1" reinsetze , wird nicht geplottet.
Woran liegt das ?

Danke.

Gruss
peter

Code:

Screenres 512,512,32

Dim Shared MyScreen as Integer Ptr
Dim Shared As Integer x

MyScreen=cast(any ptr,Screenptr)

For x=0 To 511
   MyScreen[x] = &hFF0000
                sleep 1
Next

sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 14.05.2013, 11:57    Titel: Antworten mit Zitat

der Screen muss für den direkten Zugriff 'geschützt' werden (bin mir nicht ganz sicher wieso...)

also:
Code:


Screenres 512,512,32

Dim Shared MyScreen as Integer Ptr
Dim Shared As Integer x

MyScreen=cast(any ptr,Screenptr)

For x=0 To 511
   screenlock
   MyScreen[x] = &hFF0000
   screenunlock
                sleep 1
Next

sleep


unabhängig davon wie 'seltsam' das Beispiel auf mich wirkt...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 14.05.2013, 12:08    Titel: Antworten mit Zitat

Hi,
die Bildschirmdarstellung wird nach 'sleep' nicht aktualisiert.
Mit einem einfachen Print-Befehl wird dann auch die Grafik sichtbar.

Code:
ScreenRes 512,512,32

Dim MyScreen As Integer Ptr = ScreenPtr
Dim As Integer x

For x=0 To 511
  MyScreen[x] = &hFF0000
  Sleep 1
Next
? "verdisch .."

Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
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 FreeBASIC. 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