SETPIXEL und DRAWLINE

Previous topic - Next topic

S.O.P.M.

Hat einer von euch diese beiden Befehle schonmal auf dem GP2X verwendet und damit Probleme gehabt?

Ich frage deshalb, weil bei mir eine halbe Katastrophe entsteht. Beim Setzen von Endpunkten für eine Linie außerhalb des Bildschirmes kommt es zu fehlerhafter Darstellung bis zum totalen Absturz der Anwendung (die Linie wird also nicht korrekt "geclippt"). SETPIXEL scheint ein extremes Flackern des gesamten Bildes zu verursachen, ob es auch zum Absturz bei entsprechenden Koordinaten führt, kann ich im Moment nicht sagen.

EDIT: noch zur Ergänzung, warum muss ich Koordinaten außerhalb des Bildschirmes verwenden? Ganz einfach - ich habe mir eine kleine simple 3D Engine geschrieben, die Drahtgittermodelle darstellen, um alle Achsen drehen und verschieben kann. Da ist dies es nicht ganz unumgänglich.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

S.O.P.M.

Nun habe ich noch ein bisschen rumprobiert damit. Es betrifft auf jedem Fall beide Befehle, sowohl SETPIXEL als auch DRAWLINE. Egal ob nun innerhalb der Bildschirmkoordinaten oder nicht, kommt es zu heftigem Bildflackern. Wenn man etwas genauer hinsieht fällt auch auf, dass nur jede 2. Bildschirmzeile dargestellt wird. Merkwürdig ist das, weil zumindest DRAWLINE auch in einem anderen Projekt von mir schon zur Anwendung kam und keine Schwierigkeiten machte.

Daher habe ich die Datei für den GP2X mal hochgeladen und würde bitten, dass jemand das auf seinem Gerät mal ausprobiert und dann berichtet, ob das Flackern auch da ist. Und keine Sorge wegen Absturz, wenn die Kamera nicht bewegt, gedreht und die aktuelle Ansicht beibelassen wird, dann passiert nix.
Übrigens habe ich auch schon einen Defekt an meinem Gerät ausgeschlossen und eine andere mit GLBasic erstellte Anwendung laufen lassen - funktioniert noch wie zuvor.

http://www.zshare.net/download/4468856ccfce28/
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kosta

Quote from: S.O.P.M.Nun habe ich noch ein bisschen rumprobiert damit. Es betrifft auf jedem Fall beide Befehle, sowohl SETPIXEL als auch DRAWLINE. Egal ob nun innerhalb der Bildschirmkoordinaten oder nicht, kommt es zu heftigem Bildflackern. Wenn man etwas genauer hinsieht fällt auch auf, dass nur jede 2. Bildschirmzeile dargestellt wird. Merkwürdig ist das, weil zumindest DRAWLINE auch in einem anderen Projekt von mir schon zur Anwendung kam und keine Schwierigkeiten machte.

Daher habe ich die Datei für den GP2X mal hochgeladen und würde bitten, dass jemand das auf seinem Gerät mal ausprobiert und dann berichtet, ob das Flackern auch da ist. Und keine Sorge wegen Absturz, wenn die Kamera nicht bewegt, gedreht und die aktuelle Ansicht beibelassen wird, dann passiert nix.
Übrigens habe ich auch schon einen Defekt an meinem Gerät ausgeschlossen und eine andere mit GLBasic erstellte Anwendung laufen lassen - funktioniert noch wie zuvor.

http://www.zshare.net/download/4468856ccfce28/
Ja, das Flackern kann ich bestätigen (bzw. sieht so aus, als ob er den Bildschirm zu langsam aufbaut (sync?)).

getestet auf: GP2X -Mk2 - Firmware 3.0


Kosta
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

S.O.P.M.

Dankeschön fürs Testen! Ich hatte genau dieselben Bedingungen. Also dann liegt es ganz sicher nicht an meinem Gerät.

Inzwischen habe ich noch weitere Tests durchgeführt und dieser Fehler ist zum Phänomen geworden. Ich habe nochmal ein altes Projekt neu compiliert, um sicherzugehen, dass der Compiler nicht vielleicht beschädigt ist. Die neucompilierte Datei funktioniert aber genau wie die alte. Keine Fehler, obwohl mehrere DRAWLINE's enthalten sind! Es ist mir ein Rätsel.
Für die weiteren Tests hatte ich jetzt einfach nochmal ein komplett neues Programm gemacht, einfach nur ein paar Linien und Punkte zeichnen... aber der Fehler ist da. Ich kann einfach nicht verstehen, was da jetzt anders ist im Vergleich zu meinem alten Projekt. Bei Letzterem werden eben in einem Schleifendurchlauf viele Sprites noch zusätzlich gezeichnet aber das scheint den Fehler hier in meinem aktuellen Test nicht zu beheben, denn auch da habe ich mal versucht, wie es sich bei einem Sprite verhält, das noch mit gezeichnet wird.

Ein Teufelskreis! Mehr fällt mir dazu nicht mehr ein!
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kitty Hello

HAst Du 2 Beispiele, die immer gehen bzw. nicht gehen?
Damit man mal sehen kann, wo der Unterschied ist?
Evtl. nimmst Du in einem Beipiel PRINT im anderen nicht oder so....!?

S.O.P.M.

Folgendes Beispiel funktioniert auf dem GP2X nicht:
Code (glbasic) Select
WHILE KEY(1) = 0
DRAWRECT 0, 0, 320, 240, 0x662266
FOR a = 20 TO 200 STEP 10
FOR b = 20 TO 200 STEP 10
SETPIXEL a, b, 0xffffff
NEXT
NEXT
DRAWLINE 20, 20, 90, 90, 0x00ffff
DRAWLINE 20, 20, 20, 90, 0xff00ff
DRAWRECT 100, 20, 20, 20, 0xffff00
PRINT "IF THIS IS TRUE: OH MY GOD!", 20, 160
SHOWSCREEN
WEND
Mit diesem Code jedoch funktioniert die Darstellung mit DRAWLINE einwandfrei:

http://www.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,46,2348

Zum Testen die Grafiken bitte aus dem Spiel dazu tun:

http://www.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,25,2345

Kurios ist hierbei, dass kein Zusammenhang zu erkennen ist, unter welchen Bedingungen die Darstellung fehlerfrei ist und unter welchen nicht. Ganz gleich ob ich PRINT oder nicht, SETPIXEL oder nicht, SETPIXEL ohne DRAWLINE usw. probiere, kriege ich kein Beispiel mehr hin, bei welchem SETPIXEL und/oder DRAWLINE ordnungsgemäß funktionieren. SETSCREEN hat hierbei auch keinerlei Einfluss. Ich kann es weglassen oder nicht, spielt keine Rolle. Eine Beschädigung des Compilers habe ich wie gesagt auch bereits ausschließen können. Ich kann ja mein altes Projekt erneut compilieren und es funktioniert wie zuvor.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kosta

Quote from: S.O.P.M.Folgendes Beispiel funktioniert auf dem GP2X nicht:
Code (glbasic) Select
WHILE KEY(1) = 0
DRAWRECT 0, 0, 320, 240, 0x662266
FOR a = 20 TO 200 STEP 10
FOR b = 20 TO 200 STEP 10
SETPIXEL a, b, 0xffffff
NEXT
NEXT
DRAWLINE 20, 20, 90, 90, 0x00ffff
DRAWLINE 20, 20, 20, 90, 0xff00ff
DRAWRECT 100, 20, 20, 20, 0xffff00
PRINT "IF THIS IS TRUE: OH MY GOD!", 20, 160
SHOWSCREEN
WEND
hmmm....inwiefern soll das hier nicht funktionieren ?
also ich habe kein Flackern, oder sonstiges....

ich habe hier etwas bewegung ins spiel gebracht, aber auch dies funktioniert...
Code (glbasic) Select
WHILE KEY(15) = 0
    DRAWRECT 0, 0, 320, 240, 0x662266
    FOR a = 20 TO 200 STEP 10
        FOR b = 20 TO 200 STEP 10
            SETPIXEL a, b, 0xffffff
        NEXT
    NEXT
  IF KEY(203)=1
  DEC xx,1
  ELSEIF KEY(205)=1
  INC xx,1
ELSEIF KEY(200)=1
  DEC yy,1
ELSEIF KEY(208)=1
  INC yy,1
ELSEIF KEY(29)=1
  x1=RND(320)
  y1=RND(200)
ENDIF
DRAWLINE x1, y1, xx, yy, 0x00ffff
    DRAWLINE 320-x1, 200-y1, xx, yy, 0xff00ff
    DRAWRECT 100, 20, 20, 20, 0xffff00
    PRINT "IF THIS IS TRUE: OH !", 20, 160
    SHOWSCREEN
WEND
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

S.O.P.M.

Ich probiers nachher mal aus...
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

S.O.P.M.

Fehlanzeige. Nix funktioniert da. Das Punktraster wird vertikal gestreckt und geht weit über den unteren Bildschirmrand hinaus. Diese Punkte erscheinen dann an anderen Stellen flackernd. Ebenso mit den Linien.
Kosta, um jedes Missverständnis auszuschließen: du hast es aber schon auf dem GP2X gestestet, ja!? Unter Windows ist keine Frage, dass es funktioniert.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kosta

Quote from: S.O.P.M.Fehlanzeige. Nix funktioniert da. Das Punktraster wird vertikal gestreckt und geht weit über den unteren Bildschirmrand hinaus. Diese Punkte erscheinen dann an anderen Stellen flackernd. Ebenso mit den Linien.
Kosta, um jedes Missverständnis auszuschließen: du hast es aber schon auf dem GP2X gestestet, ja!? Unter Windows ist keine Frage, dass es funktioniert.
hmmm...bei mir ist das Raster quadratisch...und hört Rechtzeitig (also bei den gewünschten Koordinaten) auf.
Habe keine flackernden Stellen (die Linien auch nicht).

Ja...auf dem GP2X getestet. Das Windows-Executable sieht genauso aus und verhält sich auch so wie das GP2X-Binary...

hmmm..hier ist der o. Code als GP2X-Executable bei mir kompiliert:
schau mal ob der bei dir genauso aus sieht...Vielleicht erzeugt dein Compiler momentan irgendwelchen Murks (irgendwas verstellt??/Neuinstallation nötig)


http://www.terpsichori-ev.de/drawline.gpe
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

S.O.P.M.

Danke für dein File. Leider funktioniert auch dies bei mir nicht. Mein Compiler scheint also noch in Ordnung zu sein. Damit bleibt die Sache mysteriös denn wie soll das erklärbar sein? Ich würde es mal als sehr unwahrscheinlich betrachten, dass bei meinem GP2X softwareseitig etwas derartig "kaputt" gegangen ist, was für eine fehlerfreie Darstellung von Linien und Punkten nur unter bestimmten Vorraussetzungen zulässt...  merkwürdiger Weise ging ja die von mir direkt geladene Datei bei dir auch nicht.

EDIT: ob es an der mmuhack.o Datei liegen kann? Ich habe zwar überprüft, dass die vom Compiler ausgegebene mit den bereits verwendeten übereinstimmt aber vielleicht ist sie trotzdem unbrauchbar geworden...
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

S.O.P.M.

An der mmuhack.o liegt es nicht, ich habe diese Datei von einem Ordner kopiert, dessen gpe fehlerfrei läuft. Ich habe noch viele weitere Tests gemacht aber es ist alles vergebens und ich kann einfach keinen Zusammenhang für diese Fehlfunktion finden. Folgender Code:
Code (glbasic) Select
WHILE KEY(1) = 0
FOR a = 20 TO 200 STEP 10
FOR b = 20 TO 200 STEP 10
SETPIXEL a, b, 0xffffff
NEXT
NEXT
    DRAWLINE 20, 20, 80, 20, 0xffffff
    DRAWLINE 20, 20, 140, 140, 0xff0000
    DRAWLINE 10, 160, 300, 160, 0x00FF00
    SHOWSCREEN
WEND
sieht in Windows und auf dem GP2X wie folgt aus:

http://www.zshare.net/download/4531646df431d5/

Ich wollte hiermit mal deutlich zeigen, wie die Darstellung sich unterscheidet. Bleibt mir wieder einmal nur zu hoffen, dass Gernot sich darüber erbarmt. Meiner Meinung nach muss es ein Bug sein. Nur warum er nicht schon eher aufgetreten ist, bleibt mir ein absolutes Rätsel.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kitty Hello

Oh weia! Ich werd's mir ansehen. Versprochen.

S.O.P.M.

Wenn du es schaffst, diesen Bug zu fixen, dann werde ich nicht mehr in absehbarer Zeit mit Bugs nerven. Das ist auch versprochen :)
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kitty Hello

Quote from: S.O.P.M.Folgender Code:
Code (glbasic) Select
WHILE KEY(1) = 0
FOR a = 20 TO 200 STEP 10
FOR b = 20 TO 200 STEP 10
SETPIXEL a, b, 0xffffff
NEXT
NEXT
    DRAWLINE 20, 20, 80, 20, 0xffffff
    DRAWLINE 20, 20, 140, 140, 0xff0000
    DRAWLINE 10, 160, 300, 160, 0x00FF00
    SHOWSCREEN
WEND
Funktioniert bei mir (MK2) mit der aktuellen Version 5.069 perfekt.
Bitte nachprüfen.