TV-Rauschflimmer-Effekt mit BB machen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Blizzard

Betreff: TV-Rauschflimmer-Effekt mit BB machen

BeitragDo, Jan 06, 2005 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie macht man so einen Effekt wie man ihn im TV sieht, wenn kein Programm mehr läuft und der Screen s/w flimmert?

Einfach per Random schwarze bzw. weiße Pixel auf den Screen zeichnen?

DA

BeitragDo, Jan 06, 2005 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

Hab hier mal kurz was zusammen geschnipzelt. Könnte vieleicht ein Grundgerüst für sowas sein.
Vieleicht kannst ja was damit anfangen.

Code: [AUSKLAPPEN]

Graphics 640, 480, 16, 2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Repeat
Cls

For x = 1 To 640
For y = 1 To 480

If d = 1 Then
Color 255, 255, 255
 Plot Rand(0,640),Rand(0,480)
d = 2
 Else
Color 0, 0, 0
 Plot Rand(0, 640),Rand(0,480)
d = 1
EndIf

Next
Next

Flip
Until KeyHit(1)
End


Thx
DarkAngel
Deutscher Blitz Basic Chat
 

noir

BeitragDo, Jan 06, 2005 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
bin wohl zu langsam Wink
dafür ist mein beispiel schnellerer Very Happy
hier mit writepixelfast, schau in der OH nach da ist fast genauso ein beispiel!


Code: [AUSKLAPPEN]

Graphics 640,480,0,2
SetBuffer BackBuffer()


repeat

LockBuffer BackBuffer()

For i=0 To 640
For j = 1 To 480

t = Rand(0,1)

If t = 0 Then
a=0
r=255
g = 255
b=255
Else
a=0
r=0
g = 0
b=0
EndIf
rgb=a*$1000000 + r*$10000 + g*$100 + b
WritePixelFast i,j,rgb

Next
Next


UnlockBuffer BackBuffer()
Flip
until keyhit(1)
End

DA

BeitragDo, Jan 06, 2005 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

Nicht ganz Razz

Bei mir kommt nämlich nur ein schönes Memory access violation.
Bei WritePixelFast i,j,rgb.

Thx
DarkAngel
Deutscher Blitz Basic Chat
 

Blizzard

BeitragDo, Jan 06, 2005 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kommt etwa hin... aber beide noch bischen zu langsam Sad

Vielleicht sollte man auch noch aller 2 Pixel eine "Scanline" einbauen, dann sieht es mehr nach TV aus. Und irgendwie überwiegt das weiß...

Spikespine

BeitragDo, Jan 06, 2005 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ne also plot ist echt zu lahm.
das beispiel von noir ist aber echt ... echt Smile
 

noir

BeitragDo, Jan 06, 2005 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
DarkAngel hat Folgendes geschrieben:
Moin,

Nicht ganz Razz

Bei mir kommt nämlich nur ein schönes Memory access violation.
Bei WritePixelFast i,j,rgb.

Thx
DarkAngel


bei mir nicht!
welche bb version hast du denn?

Spikespine

BeitragDo, Jan 06, 2005 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, mit debugger ist das von noir bei mir auch langsam.
wenn ich ihn abschalte gehts aber gut.
 

noir

BeitragDo, Jan 06, 2005 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
genau Wink

steht glaub ich auch in der OH drinnen.

D2006

Administrator

BeitragDo, Jan 06, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Programmierfehler! (ha, jetzt hab ichs ihm gegeben)

noir hat Folgendes geschrieben:
Code: [AUSKLAPPEN]

For i=0 To 640
For j = 1 To 480
...
Next
Next


Der Backbuffer geht von 0 bis 639 bzw. von 0 bis 479.
Deswegen kommt bei manchen ein Memory Access Violation.

MfG
D2006
 

noir

BeitragDo, Jan 06, 2005 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
D2006 hat Folgendes geschrieben:

Programmierfehler! (ha, jetzt hab ichs ihm gegeben)


ich zittere, ich zittere Wink

hast recht Smile
ich hab das in ner halben minute zusammen gebastelt, beispiel aus der oh kopiert, schnell ne kleinigkeit verändert und fertig Wink

BladeRunner

Moderator

BeitragDo, Jan 06, 2005 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur als Tipp. Im Forum auf Blitzbasic.com gab es einen schönen Code dafür. war mit sprites umgesetzt, lief schön flüssig, wirklich nett.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Sebastian

BeitragDo, Jan 06, 2005 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

.....
For i=0 To 640 Step 2
For j = 1 To 480 Step 2
....


=> Das Weiß uberweigt nicht mehr so startk un es läuf ein bisschen schneller ......
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

noir

BeitragDo, Jan 06, 2005 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
das hatte ich auch ausprobiert, aber ich finde das sieht scheiße aus und außerdem is mein beispiel, jedenfalls bei mir schnell genug Wink

Spikespine

BeitragDo, Jan 06, 2005 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
nee das sieht nicht mehr echt aus
was noch annähernd geht ist folgendes:
Code: [AUSKLAPPEN]

Graphics 640,480,0,2
SetBuffer BackBuffer()


Repeat

LockBuffer BackBuffer()

For i=0 To 640 Step 2
For j = 1 To 480

t = Rand(0,1)

If t = 0 Then
a=0
r=255
g = 255
b=255
Else
a=0
r=0
g = 0
b=0
EndIf
rgb=a*$1000000 + r*$10000 + g*$100 + b
WritePixelFast i,j,rgb
WritePixelFast i+1,j,rgb

Next
Next


UnlockBuffer BackBuffer()
Flip
Until KeyHit(1)
End

Travis

BeitragDo, Jan 06, 2005 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles viel zu langsam Wink

Code: [AUSKLAPPEN]

Global ResX = 640
Global ResY = 480

Graphics ResX, ResY, 16, 2

Dim Rauschen(10)


Text ResX/2, ResY/2, "Bitte warten...", 1

For i = 0 To 9
 Rauschen(i) = CreateImage(ResX, ResY)
 SetBuffer ImageBuffer(Rauschen(i))
 For y = 0 To ResY Step 1
  For x = 0 To ResX Step 2
   z = Rnd(1)
   If z = 1 Then Color 255,255,255
   If z = 0 Then Color 0,0,0
   Rect x,y,2,1,1
  Next
 Next
Next


SetBuffer BackBuffer()
 Repeat
  Cls
   
   DrawImage Rauschen(f), 0,0   
   
   If MilliSecs() - Timer1 > 30 Then
    f = f + 1
    If f = 10 Then f = 0
    Timer1 = MilliSecs()
   EndIf

  Flip
 Until KeyHit(1)
End
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

noir

BeitragDo, Jan 06, 2005 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@Travis dein beispiel ist ja quasi "vorgerendert". Wink

@Spikespinenur wegen dieser änderung postest du nochmal den ganze code: 640 Step 2 ???

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Jan 06, 2005 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
versucht das mal!Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()

Repeat
Cls
LockBuffer BackBuffer()

For i=0 To 639 Step 2
For j = 0 To 479

t = Rand(0,1)
If t = 1 Then
    WritePixelFast i,j,$ffffff
    WritePixelFast i+1,j,$ffffff
EndIf
Next
Next

UnlockBuffer BackBuffer()

Flip
Until KeyHit(1)
End


und hier der neue Bildschirmschoner mit einer scanline
Fehlt nur der Ton noch!Code: [AUSKLAPPEN]
Graphics 640 ,480,16,1
SetBuffer BackBuffer ()
ClsColor 0 ,0, $ffffff
Repeat
    Cls
    LockBuffer BackBuffer ()
    ScanLine = (ScanLine + 10) Mod 478
    For j = 0 To 479
        For i = 0 To 639 Step 2
            t = Rand (0 ,1)
            If t = 1 Then
                WritePixelFast i,j,0
                WritePixelFast i + 1 ,j,0
            EndIf
        Next
        If j = ScanLine Then j = j + 2
    Next
    UnlockBuffer BackBuffer ()
    Flip 0
Until KeyHit (1)
End
[BB2D | BB3D | BB+]

wunderkind

BeitragDo, Jan 06, 2005 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht eher aus, als würde jemand mit riesigen Scancodes mein Auge belästigen Wink. Um dem ganzen etwas mehr Realismus zu verpassen, könnte man vielleicht auch ein paar Grautöne dazwischensetzen. Damit würde vielleicht etwas die Schärfe der Monitorpunkte gegenüber eines Fernsehbildes aufgehoben werden.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Jan 06, 2005 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich konnte es mal wieder nicht lassen!Code: [AUSKLAPPEN]
Graphics 640 ,480,16,0
SetBuffer BackBuffer ()
SeedRnd (MilliSecs () )
ClsColor 0 ,0, $ffffff
Color 0 ,0, 255
Dim img (1000) ,FPS (3)
For t = 0 To 1000
    img (t) = CreateImage (640 ,1)
    SetBuffer ImageBuffer (img (t) )
    LockBuffer
    For i = 0 To 639
        dummy = Rand (1 ,10)
        Select dummy
         Case 1 ,2,3,4,5,6 WritePixel i,0, 0
         Case 7 WritePixelFast i,0, $181818
         Case 8 WritePixelFast i,0, $f8f8f8
         Default WritePixelFast i,0, $ffffff
        End Select
    Next
    UnlockBuffer
Next
hg= CreateImage (60,15)
SetBuffer BackBuffer ()
Repeat
    Cls
    j = (j + 10) Mod 478
    For i = 0 To 479
        DrawBlock img (Rand (0 ,1000) ) ,0,i
        If i = j Then i = i + 2
    Next
    DrawBlock hg,0,0
    Text 0 ,0,"FPS:" + FPS (1) : FPS (2) = FPS (2) + 1 : If MilliSecs () > FPS (3) + 999 Then FPS (1) = FPS (2) : FPS (2) = 0 : FPS (3) = MilliSecs ()

    Flip 1
Until KeyHit (1)
End
[BB2D | BB3D | BB+]

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group