Seite 3 von 5

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 25.06.2010 13:48
von ralle
Funktioniert, ist aber a...rm lahm (2-3 Bilder die Sekunde).

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 25.06.2010 13:58
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:

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 25.06.2010 14:19
von ralle
Aaaaaaah, ohne Debugger läuft das sehr, sehr schick ^^ Und Fehlerfrei!

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 28.06.2010 13:35
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

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 28.06.2010 16:26
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.

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 28.06.2010 18:06
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:

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 28.06.2010 19:12
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?

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 28.06.2010 19:28
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:

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 28.06.2010 20:04
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

Re: Adresse suchen um ein Pixel zusetzen.

Verfasst: 28.06.2010 20:07
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