flip

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

regaa

Betreff: flip

BeitragDo, Nov 18, 2004 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir Gedacht die CPU und die Grafikkarte zu entlasten wenn ich nach folgendem schema vorgehe:

Zitat:
...
setbuffer backbuffer()


while not keydown(1)
changed=(mousexspeed() or mouseyspeed() or mousedown(1)....)

if changed
; ZEICHNE ALLES
endif

if changed
flip
endif
wend



Meine Frage: Warum flackert das dann und immer nur dann wenn ich die Maus bewege. Ich kann das einfach nicht nachvollziehen, weil doch nur dann backbuffer beschrieben wird, wenn ich die Maus bewege und nur dann wird die Adressierung der Grafikspeicher vertauscht, aber auch dann flackert es für 1 Frame jeweils nach dem CHANGED=1 einmal in der Schleife durchgelaufen ist. Wenn ich die Maus aber langsam bewege so flackert es nicht, warum?

Wäre für jeden Tipp dankbar.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

hot-bit

Gast

BeitragDo, Nov 18, 2004 12:36
Antworten mit Zitat
Hoi.

Setze Flip außerhalb von If.. EndIf !

Toni

Jan_

Ehemaliger Admin

BeitragDo, Nov 18, 2004 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Hot bit, das glaube icj nciht, lese dir mal alles durch, er will Event aktuallisierung simulieren.
between angels and insects

regaa

BeitragDo, Nov 18, 2004 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Dankem aber hab ich auch schon versucht, ist eigentlich dann sogar noch nen bischen flimmriger.

@Jan: Genau, ich will eben das nen Prog nur dann was tun muss, also auch das flip wenn der user z.B. die Maus betätigt, also wenn irgendein Event anfällt.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

OJay

BeitragDo, Nov 18, 2004 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
mein tipp: verstehe was der computer macht, wenn du bestimmte befehle ausführst! einfach nur mal ins blaue irgendwas versuchen geht nicht, wie du siehst.

regaa

BeitragDo, Nov 18, 2004 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap und eben deswegen meine Frage, ich versuch den Computer seit über 10 Jahren zu verstehen Laughing .

Das mit den Events abfragen ist nicht das Problem, aber ich verstehe nicht, wie wenn nichts in den Backbuffer gelegt wurde, und auch nichts geflippt wurde, und wenn danach was in den Backbuffer geschrieben wird, und dann wieder geflipt wird das dann ein kruzer Flimmer entsteht.

@Ojay: Ach komm, wenn du die Antwort weisst dann kannst du sie mir doch sagen. Ich bin nun wirklich nicht jemand der immer erst fragt und danach ausprobiert, bzw. hab ich echt nicht viele Threads erstellt.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

hot-bit

Gast

BeitragDo, Nov 18, 2004 13:04
Antworten mit Zitat
Hoi.

Ich kann das leider nicht nachvollziehen.
Bei mir gibts kein Flimmern ...

Aber:
Code: [AUSKLAPPEN]
if changed
  ; ZEICHNE ALLES
endif

if changed
  flip
endif


Das kann ja wohl auch nicht stimmen.
Denn wenn eine Bewegung ist, läßt du alles neu zeichnen, und sofort wieder löschen.

Toni

regaa

BeitragDo, Nov 18, 2004 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hot-bit hat Folgendes geschrieben:
Hoi.

Ich kann das leider nicht nachvollziehen.
Bei mir gibts kein Flimmern ...

Aber:
Code: [AUSKLAPPEN]
if changed
  ; ZEICHNE ALLES
endif

if changed
  flip
endif


Das kann ja wohl auch nicht stimmen.
Denn wenn eine Bewegung ist, läßt du alles neu zeichnen, und sofort wieder löschen.

Toni


Ah, da könnte was dran sein. Warum lösche ich alles? Vielleicht ist das der logische Punkt den ich nicht verstehe.

Also ich weiss nicht wie ihr jetzt über mich denkt, es ist nicht das erste mal das ich ein flip einsetzte oder so, ich code auch schon seit jahren in BB aber ich hänge jetzt halt an so nem billigen eventerfassundzeichnenurdann Problem Confused

Nachtrag: Es wird auch nirgendwo in Realtime Setbuffer verwendet, nur Viewport, aber der hat eigentlich weniger damit was zu tun.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

Dreamora

BeitragDo, Nov 18, 2004 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
warum das flackert: zu viele flips
Hast du in deinen Grafikkartensettings VSYNC rausgenommen?

Bei dem Konstrukt das du da hast kann im schlimmsten Fall 600-1000 flips sein und dein Bildschirm bekommst ~100 ( nehme hier einfach ma einen ungefähren Durchschnitt, TFT wäre 60 ) Flips hin, damit wird immer nur ein teil geflippt, neu gestartet und wieder geflipt, womit es beginnt zu flackern.

Ich hab das Problem auch bei "ungünstigen" FPS, deshalb ist bei mir das Flipping über eine TimerVariable gesteuert ... denn sonst würde Flip immer ein abwarten des programmes erzwingen, was ich definitiv nicht will.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

regaa

BeitragDo, Nov 18, 2004 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm...ne, aber wenn ich das if konstruckt darausnehme und flip 0 einsetze so das es mit 300-1000 fps läuft dann flackert es nicht, außer wenn ich die changed variable benutze, halt so wie das im pseudo-code ist.

EDIT: Ahh merke soeben das nicht alles flackert nur einige Elemente die auf einem Parent sich befinden.

Ich will mal stark annehmen das es was mit der Häufigkeit des Zeichnens der einzelnen Elemente zu tun hat. *michanlaptopsetz*

Ich denke mal das liegt einfach in meiner Zeichenlogik der Elemente. Und irgendwie ist es immer so wenn ich mein Problem poste dann finde ich selber die Antwort wenn iche s nicht tu, so such ich danach bis ich kein Bock mehr hab. Confused
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

hot-bit

Gast

BeitragDo, Nov 18, 2004 13:34
Antworten mit Zitat
Hoi.

lol..

schön langsam kommen wir hier alle durcheinander.

Zuviele Flips können es ja nicht sein.

Höchstens zuwenig Smile

Toni

regaa

BeitragDo, Nov 18, 2004 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank an alle, auf enie Problemlösung bin ich durch HOT-BIT und Dreamora gekommen.

Ich bitte alle hiermit nicht auf mein Thread zu antworten, da ich soweit bin das ich das Problem kenne, und es von allein lösen muss .Smile
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

hot-bit

Gast

BeitragDo, Nov 18, 2004 13:43
Antworten mit Zitat
Hoi.

Das nenne ich mal Engagement !
Hast Plus-Punkte bei mir !

Daß ich sowas hier noch erleben darf .....

Toni

regaa

BeitragDo, Nov 18, 2004 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, cool Danke Razz
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

hot-bit

Gast

BeitragDo, Nov 18, 2004 14:05
Antworten mit Zitat
Hoi.

Mal als Denkanstoss:

Wenn du ein WaitTimer() drin hättest, würde wahrscheinlich kein Flimmern sein.
Oder halt eine andere Routine, welche das managt.

Toni

theotheoderich

BeitragDo, Nov 18, 2004 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo regaa,

ich habe es auch mal ausprobiert (Arbeitsrechner, Onboardgrafik).
Bei mir hängt sich das Prog nach 1 sek auf und lässt sich auch nicht im Task-Manager rausschmeissen.

Erst mit -WaitTimer- funktioniert es (flimmerfrei).

Wollte ich nur kurz loswerden.

Gruß

TheoTheoderich
Gruß
TheoTheoderich
--
The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer.

regaa

BeitragDo, Nov 18, 2004 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt, die Problemlösung , zumindest den Lösungsweg hab ich schon, muss es nur noch umsetzen. Das ist ein bsichen kompliziert weil ich an mehreren stellen im 8k zeilen code was abändern muss, bzw. an manchen events nicht mit return rausgehen darf, da dann die zeichenreinfolge verändert wird.

@Theo: Ok, ich werd es berücksichtigen Razz

EDIT: Juhu, es funzt Razz .
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group