Registriert: Sa Apr 09, 2011 20:48 Beiträge: 43
Programmiersprache: Delphi
Hallo,
hab mich grad angemeldet und dies ist mein erster Beitrag in diesem Forum. Ich arbeite schon seit langer Zeit mit Delphi, aber OpenGL kenne ich erst seit ein paar Tagen. Dank der Tutorials habe ich auch schnell die ersten Erfolge feiern dürfen.
So kommen dann auch schnell weitere Fragen auf. Aktuell habe ich ein Problem mit der Mausabfrage.
Ich habe eine Gameloop die ständig läuft. In dieser Gameloop frage ich die Bewegung der Maus ab. Diese wird dann in eine Bewegung in X- und Z-Ebene umgesetzt. Also die typische FirstPerson-Ansicht.
Jetzt das Problem: Wenn die Maus den Rand meines Formulars erreicht, stoppt die Bewegung. D.h. ich erreiche so natürlich keine 360 Grad Drehung. Ich bin von der Größe des Fensters abhängig. Um das zu umgehen, müsste man die Mausbewegung auch dann mitgeteilt bekommen, wenn diese Grenzen erreicht werden.
Meine Frage: Gibt es eine WinAPI oder anderweitige Funktion mit deren Hilfe ich die Mausbewegung ständig abfragen kann. Ich meine damit NICHT die Position, die ist mir im Grunde völlig egal.
Ich hoffe mich klar genug ausgedrückt zu haben. Ansonsten bitte nachfragen. Ich denke, das ist ein Problem das doch schon jeder gehabt haben muss. Leider konnte ich bisher keine geeigneten Artikel dazu im Internet finden.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Die meisten Spiele lösen das dann entweder mit Mouse Grabbing oder indem sie die Mausposition immer in die Fenstermitte zurücksetzen. Ich weiß nicht, wie man ersteres realisiert, ich nutze eigentlich immer SDL, das tut das für mich . Aber vielleicht ist das Denk- und Rechercheanstoß genug, bis jemand mit mehr Informationen vorbeikommt .
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Sa Apr 09, 2011 20:48 Beiträge: 43
Programmiersprache: Delphi
Also...
Wenn ich im Formular mit OnMouseMove arbeite und dort, nach errechnetem Delta, die Mausposition mit SetCursorPos auf die Mitte des Fensters setze, dann bleibt das ganze Programm hängen. Ich muss Mittels ALT+TAB auf Delphi wechseln und das Programm killen.
Wenn ich jedoch mit GetCurorPos in meiner GameLoop arbeite, dann kann ich dort SetCursorPos nutzen. Das funkt jetzt einwandfrei. Warum an der einen und nicht an der anderen Stelle ist jetzt erst mal zweitrangig.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Naja, überleg mal, was passiert wenn du SetCursorPos im MouseMove aufrufst… Du bewegst den Cursor. Über dem Formular. Sorgt für ein MouseMove, was wiederum ein SetCursorPos aufruft …
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Sa Apr 09, 2011 20:48 Beiträge: 43
Programmiersprache: Delphi
Lord Horazont hat geschrieben:
Naja, überleg mal, was passiert wenn du SetCursorPos im MouseMove aufrufst… Du bewegst den Cursor. Über dem Formular. Sorgt für ein MouseMove, was wiederum ein SetCursorPos aufruft …
Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.