Adresse suchen um ein Pixel zusetzen.

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von ralle »

Funktioniert, ist aber a...rm lahm (2-3 Bilder die Sekunde).
Benutzeravatar
SoS
Beiträge: 340
Registriert: 29.08.2004 09:31
Kontaktdaten:

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von SoS »

ralle hat geschrieben:Funktioniert, ist aber a...rm lahm (2-3 Bilder die Sekunde).
Jo,schalt mal den Debugger aus ,falls der aus war möchte ich deinen Rechner nicht geschenkt haben. :lol:
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von ralle »

Aaaaaaah, ohne Debugger läuft das sehr, sehr schick ^^ Und Fehlerfrei!
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von super_castle »

Du "siehst" ein geänderten Pixel doch eh erst wenn du FlipBuffers() ausgeführt hast.
Eben, das ist der Mist. In 0.0025 sec brauche ich 112 Pixel senkrecht von unten nach oben, dabei muss jeder einzelne Pixel gleich angezeigt werden. Es müssen davon 32 Zeilen je 2 Pixel breit von rechts nach links geschrieben werden. Das Timing muss zu 99% stimmen. Zur Zeit schafft das nur GFA-Basic mit dem Timing.

Das ist das Prinzig der Nipkow-Scheibe.
Es wird eine Wav-Datei(48000khz) "NipKow-Film" ausgelesen mit dem GFA-Programm und als Nipkowfilm gezeigt. Es wird sogar noch nach jeder Zeile ein Bild daneben geblittet.

Code: Alles auswählen

Global Integer datenspeicher, datenlaenge, lauf, wert, n_dat, test
Global Integer x, y, xs, ys, farbe, zz
Global Card wert1
Global String datei_in
Global t#
Global Const zeile_z As Double = 0.0025

Dim MediaPath As String =  App.Path & "\media\"

Form f0 = "nipkow" , , , 600, 400 : .AutoRedraw = 1 : BackColor = RGB(200, 200, 200)
Ocx Form bild = , 200, 10, 64, 112 : .Appearance = 0 : .AutoRedraw = 1
Ocx RichEdit rtf1  = , 10, 80 , 150, 150 :  BackColor = RGB(200, 200, 200)
rtf1.ScrollBars = basVertical
rtf1.DisableNoScroll = 1
Ocx TextBox ed1  = , 10, 50, 150, 20
Ocx Command CO(1) = "Wav laden", 10, 10, 70, 25

n_dat = 92
xs = 63
ys = 112

Do
  Sleep
Loop Until Me Is Nothing

Sub abspielen
  
  If !Exist(MediaPath & datei_in) Then
    rtf1.SelText = ("Fehler..." + Chr(10))
    Exit Sub
  Else
    datenlaenge = FileLen(MediaPath & datei_in)
    datenspeicher = mAlloc(datenlaenge + 1)
    BLoad MediaPath & datei_in , datenspeicher
  EndIf
  
  Set Me = bild
  
  For lauf = n_dat To datenlaenge Step 4
    wert = LPeek(datenspeicher + lauf)
    If wert = -325976064
      lauf = lauf + 7 * 4
      wert = LPeek(datenspeicher + lauf)
      If wert = -325976064
        x = x - 2
        y = ys
        
        anfang:
        If (Timer - t) < zeile_z Then GoTo anfang       
        BitBlt bild.hDC2, 0, 0, 64, 112, f0.hDC, 300, 10    
        t = Timer
        
        GoTo weiter
      End If
    End If
    
    If wert = 0
      lauf = lauf + 7 * 4
      wert = LPeek(datenspeicher + lauf)
      If wert = 0
        x = xs
        y = ys
        
        GoTo weiter
      EndIf
    End If
    
    wert1 = HiWord(wert)
    farbe = wert1 / 256
    Color RGB(farbe + 80 , farbe + 80 , farbe + 80)
    y = y - 1
    Pset x, y
    Pset x - 1, y
    
    weiter:
  Next
  
Sub CO_Click(index%)
  datei_in = ed1 & ".wav"
  abspielen()
  
Sub tb_KeyDown(Code&, Shift&)
 



Gruss
Benutzeravatar
SoS
Beiträge: 340
Registriert: 29.08.2004 09:31
Kontaktdaten:

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von SoS »

super_castle hat geschrieben: Eben, das ist der Mist. In 0.0025 sec brauche ich 112 Pixel senkrecht von unten nach oben, dabei muss jeder einzelne Pixel gleich angezeigt werden. Es müssen davon 32 Zeilen je 2 Pixel breit von rechts nach links geschrieben werden. Das Timing muss zu 99% stimmen. Zur Zeit schafft das nur GFA-Basic mit dem Timing.
Gruss
Du schaffst es nicht die paar Pixel in 25 ms darzustellen ?
Sorry ,aber selte solch einen Unfug gelesen.
Zuletzt geändert von SoS am 29.06.2010 02:29, insgesamt 1-mal geändert.
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von kob »

Alter nurma so wegen dein möcht gern Pb diss , ja es gibt bessere sprachen als PB und nein PB ist nicht kopliziert.

Auserdem gibt es technische grenzen beim rendern , nichtnur , weil die grafikarte wegen dem darstellen
denn ganzen DrawingBuffer IMMER durch ein paar kabel quetscht. Auserdem packt ein 'normaler' bildschirm
max um die 200HZ das sind also 200FP/s -> 1000ms / 200fps = 5ms pro bild .

ABER : es gibt möglichkeiten , den buffer der gerendert wird , ja genau nicht den backbuffer , zu verändern , dies ist enorm schnell und
nicht wirklich schön , da flimmereffekt und andere nicht schöne grafikproblem auftreten können. Und wenn du schon PB drawing schwierig findest ,
solltest du vieleicht überdenken , ob du nicht wirklich umsteigst und aufhörst zu flamen Oder ob du nicht ein anderes
projekt anfangen solltes. :o

:iamwithstupid:
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von Fluid Byte »

Man super_castle du lächerlicher Dummschwätzer ... :freak:

Was willst du jetzt noch, hmmm? PureBasic ist scheiße, GFA Basic komplett überlegen und du kommst nicht mehr wieder.
Das haben wir doch längst alles geklärt. Warum kommst du jetzt wieder angeschissen?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von kob »

Also da danke ich jetzt nochmal meinem Technologie lehrer , der uns immer an
die realisierbarkeit hat denken lassen. Der hatte es echt drauf. Hier wofür brauchst du
eigentlich das ding ? schonmal daran gedacht die lösung deines problems anders anzugehen ?
Schonmal daran gedacht das du hier im FALSCHEM forum bist ?

PS : Fragen über fragen und keine antworten , nur TranceBase.fm :lol:
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von super_castle »

Du schaffst es nicht die paar Pixel in 25 ms darzustellen ?
Sorry ,aber selte solch einen Unfug gelesen.

Das folgende Bild wird in meinem Player in unter 16 ms erstellt.
Oh, man, Mensch les dir oben mal die Zeit genau Raus.

2,5 ms genau für 112 Pixel und das ohne Flackern und Flip-Flop :bounce:
Abweichung max 1% von 2,5 ms , nicht mehr und nicht weniger.


Also ohne Bauernkalender, nach dem Motto es könnte ja hinhauen mit dem Wetter oder auch nicht.
Nach 80ms muss genau zu 99% das neue Bild anfangen.
Auch nach 2 MinutenFilm muss es immer noch 80 ms +- 1% sein.

Purebasic schwächelt auch mit dem Timinig, welches stark schwankt.

Also hört mir auf zu flamen, Zeit ist hier massgebend für den Ablauf.

Gruss
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: Adresse suchen um ein Pixel zusetzen.

Beitrag von super_castle »

ob du nicht wirklich umsteigst und aufhörst zu flamen Oder ob du nicht ein anderes
projekt anfangen solltes.
Na, wer wird denn Aufgeben...... :D

Ich habe es geschafft und es läuft.
Es ist eine Sache der Programmiersprache.
Und wenn du schon PB drawing schwierig findest ,..
Jup, du hast recht, das ist der Bremsklotz... :lol:

Ich wusste bis Dato nicht, das Purebasic darin so schnell die Grätsche macht.
Es ist Schwachsinn das man nach jedem Pixel ein Flip-Flop machen muss.
Man kommt ja noch nicht einmal an das hdc2 mit einem Befehl, weil dieses nicht zugänglich ist.


Gruss
Gesperrt