Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Veritas

#1
hm, schade das sich da wohl nichts mehr ergibt  :(
#2
So nun bringen wir den Thread mal wieder zum Leben ;),
hast du ein kleines Versuchsprogramm dazu geschrieben, indem 100% davon auszugehen ist das keinerlei Micro-ruckler erkennbar sind?
Ich habe mal etwas dergleichen Versucht, das scheint so auch zu funktionieren.

Problem an der Sache: Ich habe das Gefühl das dennoch Microruckler bestehen, wenn auch nur dezent. Aber Sie sind vorhanden. Im einzelnen "mini"-drawrect, stört soetwas natürlich nicht so gewaltig.
Hat man nun 90% des Screens der sich zeitgleich bewegt fällt dieses micro-ruckeln einfach auf, da es zeitgleich bei allen passiert. Kann das irgendwas damit zu tun haben das ein Buffer voll ist und gelöscht wird um dann wieder beschrieben werden zu können oder irgendetwas GLBasic Internes dergleichen? Das quasie das dadurch quasi eine gewisse Latenz innerhalb der Animation entstehen kann?

Code (glbasic) Select
a = 20
b = 200
Speed = 9


//////////////////////////////
//////////////////////////////

LIMITFPS -1
Old_Timer=GETTIMERALL()

GETSCREENSIZE Width, Height

WHILE TRUE

    GT=(GETTIMERALL()-Old_Timer)/1000  //Durch Tausend für die Sekunden je größer der Unterschied zwischen aktuell und alten Timer, desto höher der Faktor
    Old_Timer=GETTIMERALL()



Counter = Counter + 1

IF KEY(200) = 1 THEN
Speed = Speed + 1
IF KEY(208) = 1 THEN Speed = Speed -1

IF KEY( 208) = 1 THEN Speed = Speed -1


// FOR i=0 TO 10 // eine schleife sorgt für längere Berechnung? daher höherer Faktor?

DRAWRECT b,a,100,100,RGB(255,0,0);

PixelSprung = Speed * GT
a = a + PixelSprung


// NEXT


IF (a>Height) THEN a = -100


IF (a<=0)
IF (Speed<=0)
a = Height + 100
ENDIF
ENDIF

PRINT GT,10,20
PRINT "Timer: "+GETTIMER()*1000, 10,40
PRINT "Speed & GT: "+PixelSprung,150,400
PRINT "Speed: "+Speed,500,400
PRINT "Counter "+Counter, 400, 20
PRINT "Timer: "+GETTIMERALL(), 400,40
// IF GETTIMERALL() >= 1000 THEN KEYWAIT
printfps(20,400)



SHOWSCREEN

WEND

FUNCTION printfps:l_x,l_y
GLOBAL fps_time, fps_counter, s_FPS, fps_temp
   fps_time    = GETTIMERALL()
   fps_counter = fps_counter + 1

   IF (fps_time-fps_temp) > 1000
  fps_temp    = fps_time
  s_FPS       = fps_counter
  fps_counter = 0
   ENDIF

   PRINT  s_FPS + " Frames", l_x, l_y
   RETURN s_FPS
ENDFUNCTION


(mit Pfeiltasten, lässt sich die geschwindigkeit hoch und heruntersetzen --> 9 ist nun eingestellt, da dies ursprünglich frameabhängig der Wert war, auf die art und Weise läuft das ganze natürlich wesentlich langsamer und somit auch kontrollierter)

Liebe Grüße Veritas
#3
ok cool danke x), das war mir auch aufgefallen mit den "Geisterfeldern", obwohl ich die bei mir markieren kann, die werden dann blau hinterlegt, sind halt aber einfach nur leer.

Gruß
#4
Hallo ihr Lieben,
ich habe das Problem bisher schon desöfteren gehabt, aber jetzt interressiere ich mich dafür ob man es Beheben kann.
Wenn man GlBasic startet erscheint der Projektassistent, wo die bisher bearbeiteten Projekte drinstehen.

Wenn ich jetz zum Beispiel per Email eine Datei kriege sie mit doppelklick öffne, steht sie dort drin. Wenn ich das Teil gebrauchen kann dann pack ich es in das eigentliche Zielverzeichnis, andernfalls lösche ich die mail wieder. Wenn ich jetzt das nächste mal das Programm starte, steht die "Leiche" aus der Email, da allerdings noch mit drin, funktioniert aber nicht und bietet auch keine Pfadaktualisierung an. Kann ich das irgendwo manuell lösen, weil es stört mich.
Falls da aber schon eine Änderung in gange sein sollte, ein refresh button oderso wär natürlich auch toll oder eben wie in Photoshop "clear recent" Button, das würde ja schon reichen.

Lg Verri  =D
#5
Danke,
hat geholfen, leider nicht vollständig. Das Programm startete zwar wieder, allerdings ziemlich zerschossen.
Vorübergehen kriege ich es nur zum laufen, indem ich die kompilierte *.exe aus dem dataapps ordner kopiere und dann in den überordner zurückschiebe und die darin befindliche alte *.exe überschreibe und dann aus dem ordner direkt heraus starte.
Aber das is jetzt nicht so das gelbe vom Ei ^^Ã,° any suggestions?

Grüße
#6
Hallo,
ich hab folgendes Problem:

Wenn ich in der aktuellen Version ein Project starten möchte, was zuvor in anderen Versionen lief, kommt bei mir die Fehlermeldung "bitte erst erstellen"
Also habe ich es zuerst erstellt und dann gestartet. Hab jetzt sämtliche Kombinationen durch, aber der Fehler kommt dennoch.

Der Compiler an sich beschwert sich jedoch über nichts.
Hat jemand einen Rat?

Grüße Veri
#7
Hey Guys,

big Problem! My Programm worked vey well, when I changed some routine values within my code and pressed F5 it suddenly killed glbasic and turned the monitor about 180°. I wondered and started new.
Now my BUY-Version reduced itself to Demo mode and says me, that the resolution will be limited to 640x480 and the watermark in the corner appears. Wtf is goin on with that?

Where is the Problem? What can I do? I'm close to deadline and now that. Cause of the reduction i don't even can test the previous version damned.

greetings.
#8
Hi Leute,
ähnliches Problem, andere Vermutung. Mein Blackscreen ignoriert Drawlines, die sich in der nullten zeile befinden, obwohl kein Anlass dazu besteht, da ich mich nun schon seit längerem mit diesem Problem befasse und mitlerweile alle Eventualitäten ausgeschöpft sind. Kann es sein das Blackscreen erst ab Pixel ,1,1 in Kraft tritt? Es geht nur um diese erste (0te) Spalte und diese erste (0te) Zeile. Diese wird schlichtweg einfach ausgelassen vom Blackscreen. Dies hat auch nichts mit der Befehlshierarchie

Verlauf:
Grafikbefehle --> Blackscreen (Fehler)

KEINE Schleife nur ein linearer Durchlauf ohne wiederaufgreifen der Grafikbefehle

Wenn jemand eine logischer Erklärung hat =) bitte melden

LG Veritas
#9
ok, das ist jetzt ja geklärt. Aber was ist mit dem Rahmen?
Schalte ich die Compilereinstellungen aus und überschreibe sie mit einem setscreen Befehl, der genau das Gleiche bewirkt, dann versucht er im Vollbildmodus einen Rahmen darum zu setzen und es schmiert ab.
#10
 :S okay, das ist ja logisch. Dann versteh ich folgendes nicht!

Wenn wir schon die Null mit einbeziehen, warum dann nicht konsequent? Solche Missverständnisse entstehen ja nur durch soetwas.
Ich sehe "Aha, Auflösung 1024x768 dann gibt es für mich auch ECHTE 1024te und 768te Pixel
wenn DA dann aber von 0-1023 und von 0-767 gerechnet wird dann find ich das persönlich misverständlich.

Mein Gott na gut, wenn das schon immer so war dann bin ich halt ein Freidenker :P, aber wäre das System konsequent würd ich sowas nie fragen ^^ *rausred*.

Jedenfalls war meine Vermutung richtig NICHT VORHANDENER PIXEL = Schlecht für Performance  :good:

Das Rahmenproblem habe ich jedoch immernoch.

Liebe Grüße der Veritas
#11
hm okay danke erstmal für die Info mit den Presets, das ist schon mal Gold Wert  :good:
Das mit den Grafikartentreibern kann natürlich sein. Nutze einen Toshiba L300 Sattelite downgrade auf XP.
Ausnahmsweise auch nur ein Fehler der auf diesem Rechner auftritt *an-Kopf-kratz*.
Damit wäre die zweite Frage angerissen und eventuell gelöst.

Die erste jedoch nicht, da diese auf allen getesteten Rechnern so läuft.
Quote
Kann es sein:? Das GLBasic oder generell insgesamt, es nicht möglich ist die exakte Pixelanzahl zu nutzen? Also wenn ich eine Applikation mit 1024*768 compilieren lasse, dann aber der 1024te und der 768te Pixel keinen Grafischen Inhalt haben darf, weil GlBasic an sich anders verwaltet?

Das bleibt für mich noch offen.

Liebe Grüße der Veritas
#12
Hallo ihr Lieben,
ich hab folgende Fragen und auch folgende Probleme ;)

"volles" Vollbild?


Starte ich meine Applikation, die sagen wir mal auf exakt 1024*768 Pixel ausgelegt ist, dann fehlen rechts und nach unten hin (etwa) 2-3 Pixel. Es ist also versetzt.
Ich habe dies verursacht (soweit ich das nun ausprobiert habe) ein absolutes ausbremsen der Bildberechnung. Das  Bild wird auch außerhalb des überhaupt möglichen  Bildschirmbereichs berechnet was (natürlich) zu Problemen führt --> Animation oder sonstiges laggt total als wäre zwischen jedem showscreen ein SLEEP 150

Kann es sein:? Das GLBasic oder generell insgesamt, es nicht möglich ist die exakte Pixelanzahl zu nutzen? Also wenn ich eine Applikation mit 1024*768 compilieren lasse, dann aber der 1024te und der 768te Pixel keinen Grafischen Inhalt haben darf, weil GlBasic an sich anders verwaltet? Wie kriege ich das in den Griff?


Setscreen vs. Compilervoreinstellungen


Die Voreinstellungen im Compiler sind, soweit ich es verstanden habe Presets. Dennoch muss man sie angeben. Ich kann also nicht das Feld "Auflösung" leer lassen und in meinem Quellcode "Setscreen" 1680, 1050, 0 oder irgendwas angeben. Die Presets hingegen beinhalten diese Auflösung jedoch nicht. Ich kriege den Vollbildmodus dadurch auch irghendwie nie zum laufen, selbst wenn in den Compilervoreinstellungen der Haken dafür gesetzt ist und un meinem Setscreen befehl ebenfalls drin steht erhalte ich IMMER ohne Ausnahme einen Rahmen darum. Es mag dann vielleicht auf den ganzen Monitor skaliert sein, aber der Rahmen ist trotzdem drumherum.
Hat dies irgendetwas mit fehlender kompatibilität von 16:10 screens zu tuen? Auf meinem Fujitsu Siemens 4:3 laptop screen geht es nämlich.


Die Fragen richten sich prinzipiell an alle, die davon wirklich Ahnung haben und Programmentwickler/ Mitentwickler.
Würde mich auch freuen was von Gernot dazu zu hören (und sonstige, wenn ich jemanden noch nicht kenne, vergessen haben sollte).


Liebe Grüße der Veritas


#13
ja aber welches? Der Code hat ehe ich das eingebaut hatte perfekt funktioniert. Das Null setzen war mir jetzt erstmal nicht so wichtig. Es sollte nur überhaupt einmal funktionieren =). Daüfr muss ichs dann ja nich wieder auf Null setzen ;).
#14
Huhu,
ich hab folgende Frage. Ich brauche eine Funktion mit der man eine Taste drückt und das Event nur EINMAL ausgelöst wird, also habe ich die Keyhitupdate Funktion hier aus dem Forum benutzt. Wenn man die Taste jedoch länger drückt soll die Keyhitupdate Funktion ignoriert werden und wieder das ursprüngliche KEY() ausgeführt werden.
Ich dachte das sich das so beheben lässt. Allerdings stürzt mein Programm nach dem Start ab (schließt). Hat jemand eine Idee?

Code (glbasic) Select
                                      KeyhitupdateEIN = 1

A=KeyHit(GuthabenTaste)
B=KEY(GuthabenTaste)

Zeit = GETTIMER()

IF KeyhitupdateEIN > 0  
 
  KeyHitUpdate()

  IF A = -1 // Aktion nach dem Drücken der Guthaben-Taste
 
  IF Zeit > 3000
  KeyhitupdateEIN = 0

ELSE
A = B

ENDIF
ENDIF


Dankeschön =)
Liebe Grüße Veritas
#15
AH, Okay danke Jungs.
Das mit dem Ärger dacht ich mir schon fast. Da muss ich mich mal belesen. Dann wirds wohl auch anders gehen. Ich hab ein Programm da kann man das alles nicht tun. ABER wenn man den Taskmanger aufrufen will kommt dieser "Windows" Fehlermeldung Sound und die Anwendung schließt. JEdoch speichert sie vorher und wenn man sie wieder aufruft ist das Bild zu sehen was das Programm zuletzt angezeigt hat, ehe man die Anwendung "unsanft" gekillt hat ^^.

Okay ich denk mal weiter drüber nach. Das mit dem Callback werd ich mir mal näher ansehen.
Dankeschön =)