Seite 1 von 1

maus warpen

Verfasst: 4. Februar 2007 16:02
von katz0r
hallo allerseits,

ich spiele gerade ein bisschen mit den OpenGL funktionen. Will wissen, ob Qt für "ausgewachsene" 3D anwendungen stark genug ist.

Hier das Problem: ich will die Mausbewegung wissen, so wie man es bei 3d spielen in ego-perspektive braucht, mache das im Moment mit GLWidget::mouseMoveEvent. Wenn die Maus aber an den Bildschirmrand kommt gehts natürlich nicht weiter. Jetz habe ich versucht über die Funktion QTest::mouseMove() den Cursor immer wieder in die Mitte zu setzen.
Er bleibt jatzt auch in der Mitte, aber ich habe das Gefühl, das das Aufrufen der Funktion auch ein mouseMove-Event auslöst, so dass 2 "korrespondierende" Events ausgelöst werden und meine "kamera" sich im Endefeckt erst hin und dann wieder her bewegt, aber keine wirkliche veränderung passiert ist.

kann ich irgendwie verhindern, dass ich das event von diesem Funktionsaufruf kriege? oder kann ich verhindern dass die Maus am Bildschirmrand hängen bleibt?

danke schonmal, Martin

Verfasst: 4. Februar 2007 20:35
von upsala
Wenn du die Mausposition z.B. auf 100,100 setzt müßte ja das nächste MouseMoveEvent auch 100,100 liefern. Ignoriere es dann halt einfach...

Verfasst: 5. Februar 2007 11:04
von katz0r
den Gedanken hatte ich zwischendurch auch schon, habe einfach abgefragt ob das Ding in der Mitte ankommt.

Nun ist es so, das der Mauszeiger (da wo er hinverschoben wird) rumwackelt wenn man die Maus bewegt, aber irgendwie werden nicht alle Events abgefangen. Also es werden ungefähr so viele abgelehnt wie angenommen, aber das Bild bewegt sich trotzdem nicht so richtig, es wackelt halt genauso epileptisch wie der Mauszeiger

Liegt es vielleicht daran, dass ich das neu-Zeichnen durch einen 0-Millisekunden Timer mache?
( ztimer->start(), soll ja angeblich nur auslösen wenn der Rechner fertig is die Events zu bearbeiten )
kommt er dann vielleicht mit den Events nicht mehr hinterher, immerhin ist die CPU ja immer bei 100%.

Oder macht die mouseMove() Funktion vielleicht nicht nur ein event sondern verschiebt die Maus in mehreren schritten?

danke schon mal für die Antwort!

Martin

Verfasst: 5. Februar 2007 17:55
von upsala
Setzt du die Maus bei jeder Bewegung zurück? Ich würde sie nur zurücksetzten, wenn sie in die Nähe des Randes kommt.

Verfasst: 5. Februar 2007 21:04
von franzf
Gibt es einen speziellen Grund warum du unbedingt QT verwenden willst?
Als Alternative (oder eben auch Anregung, wie das gemacht werden kann):
Schau dir mal die Irrlicht-Engine an. Da kann man ziemlich flott und (wenn man will) plattformunabhängig Spiele (oder Modeller/etc) bauen. Oder als Informationsquelle für eigene Probleme durchwühlen ;)
Man kann auch eine Gui damit bauen, TextEdit, LineEdit, ComboBoxen, Fenster, Buttons usw. sind dabei (und alles in OpenGL/D3D/...) ;))

Grüße
Franz

Verfasst: 6. Februar 2007 10:15
von katz0r
Ich wollte halt mal sehen ob Qt sowas schafft.

Hab jetzt probiert die Maus nur zurückzusetzen wenn sie Richtung Rand kommt. Ich habe aber das Gefühl, dass die Maus nicht in einem Schritt in die Mitte gesetzt wird, sondern "gefühlvoll" dadurch kriege ich glaube recht viele Events, die mich dann wieder zurück drehen.

Gibts vielleicht noch ne andre Möglichkeit die Maus zu verschieben?

Danke schonmal für alle Ideen!