Kann man irgendwie in BB+ direkt in den Frontbuffer malen?
Übersicht

![]() |
DerHaseBetreff: Kann man irgendwie in BB+ direkt in den Frontbuffer malen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich möchte, ein Programm schreiben, das mit readpixel writepixel und rect arbeitet und ohne flip auf dem Bildschirm malt. Laut Online Handbuch geht es ja nicht mehr. | ||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was hindert dich daran das ganze in Backbuffer zu machen? Bist kein Freund von Geschwindigkeit? | ||
vertex.dreamfall.at | GitHub |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber dann muss ich doch trotzdem flippen und genau das will ich NICHT. | ||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Wenn du mit dem Backbuffer arbeitest musst du gezwungenermasen flippen, sonst siehst du nämlich nichts. Das war auch noch nie anders... grüße |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
nimm einfach den Desktopbuffer ![]() |
||
between angels and insects |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich will nicht mit Backbuffer arbeiten, aber man ist dazu ja quasi gezwungen. Ich will einfach direkt in den Bildschirmbuffer schreiben, so dass ich nicht flippen muss. | ||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Warum auch immer... ![]() grüße |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß zwar nicht warum Menschen in einem Thread antworten, die keine Antwort wissen, aber was soll´s. Ich hab mal ein kleines Beispiel gemacht. DarkAngel war so freundlich mir den selben Code in BlitzBasic, in dem man kein flip braucht um auf den Monitor zu schreiben, zu kompilieren. Hier BlitzBasic Version. Der selbe Code liefert in BlitzPlus einen schwarzen Bildschirm. Also muss ein "flip" eingefügt werden. Dies aber macht das Program extrem langsamer. Hier die BlitzPlus Version. Ich weiß selber, dass ich auch nach jedem 10 Durchlauf flippen könnte usw, aber das frag ich hier nicht. Ich will wissen, ob es in BlitzPlus eine Möglichkeit hat ohne flippen auf den Bildschirm zu malen.
@Jan_: Ich dacht zuerst, das wär die Lösung, aber das ist genau so langsam als wenn ich flippen würde. |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Flip macht nichts langsamer, es stellt sich nur auf die Bildwiederholrate des Bildschirms ein. Ist dies nicht gewünscht einfach en False an das Flip hängen:Code: [AUSKLAPPEN] Flip False Wenn ich Dich richtig verstehe ist es das was Du suchst.
|
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] flip false
Hab ich auch schon probiert. Da wird die Frame Synkronisation ausgeschalten. Im Fenstermodus wird es dadurch nicht schneller, bzw kaum. Im Vollbildmodus ist es zwar schneller, aber flimmert zu sehr ![]() Setbuffer Backbuffer()
sparen. |
||
GeGenesis |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] setbuffer frontbuffer()
ist doch klar was er machen will |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und genau das gibts bei BlitzPlus nicht mehr ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Flimmern bei Flip 0 ist übrigens nicht ein Problem von Blitz oder so, sondern entsteht wenn die Framerate kein ganzes vielfaches der Bildschirmwiederholfrequenz ist.
Es gibt jedoch eine sehr simple möglichkeit es auszutricksen Code: [AUSKLAPPEN] ; den renderinterval auf 100 bilder pro Sekunde einstellen interval = 1000 / 100 ; in der mainloop if millisecs() - last_render >= interval last_render = millisecs() flip 0 endif Damit läuft dein Spiel- oder Programcode mit maximaler Geschwindigkeit, während der Flip nur eine bestimmte Anzahl Male pro Sekunde aufgerufen wird ( spart viel rechenzeit und lässt das flacken verschwinden ) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meine Vermutung für deinen Fenstermodus: Im Fenstermodus benutzt DirectX automatisch die Wiederholfrequenz des Desktops, da kann man nichts machen. Ich meine das mal irgendwo gelesen zu haben.
Die einzige Chance ist also entweder denn Vollbildmodus benutzen oder mit der eingestellten Bildwiederholrate auskommen. walski |
||
buh! |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora! Du bist ein Schatz! Scheint genau das zu sein was ich gesucht hab. Danke! Also hier der Code falls jemand damit Lust hat zu experementieren, komme Strange sachen raus, mit bisschen Veränderung kommt ein Nautilus aus Dreiecken raus. Ich werd noch paar andere Sachen in der Richtung coden und dann einen Thread eröffnen. Noch nicht optimiert, vorallem der Teil mit dem Affen ![]() Code: [AUSKLAPPEN] Graphics 800,600,16,2 x =400 y=300 d=1 affe =ReadPixel( 3,3) interval = 1000 / 100 Repeat c=ReadPixel(x,y) If c = affe Color 255,255,255 Rect x,y,2,2,1 d=d+1 Else Color 0,0,0 Rect x,y,2,2,1 d=d-1 End If If d >=7 d=d-6 End If If d <= 0 d=d+6 End If Select d Case 1 x=x+2 Case 2 y=y-2 x=x+1 Case 3 y=y-2 x=x-1 Case 4 x=x-2 Case 5 y=y+2 x=x-1 Case 6 y=y+2 x=x+1 End Select If MilliSecs() - last_render >= interval last_render = MilliSecs() Flip 0 EndIf Until KeyHit(1) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group