Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 24.08.2009, 14:23 Titel: Maus genauer abfragen |
|
|
Hi,
ich hab gerade ein Problem. Ich habe gemerkt, das in meinem 3D-Spiel die Maussteuerung grauenvoll unpräzise ist, da ich das bisher einfach über die normalen FB-Befehle gemacht, aber die sind abhängig von der Auflösung.
Kennt ihr da ne Möglichkeit, wie ich die Maus genauer abfragen kann? Im DirectX-SDK gibt es da ne Möglichkeit, aber ich verwende ja kein DirectX, außerdem sollte es auch unter Linux laufen
Bis denn _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 24.08.2009, 15:16 Titel: |
|
|
Was machst du denn bis jetzt? GETMOUSE? SCREENEVENT? Geht es um Mausposition oder Mausbewegung? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 25.08.2009, 13:42 Titel: |
|
|
Ich mach das bisher mit GETMOUSE. Ich speicher die Mausposition in zwei Variablen, im nächsten Durchgang sehe ich dann nach um wieviel die Maus sich bewegt hat, dementsprechend rotiert dann die Kamera.
Interessant ist für mich die Mausbewegung, denn es soll mal ein First-Person-Shooter werden.
Wenn sich das mal jemand ansehen will: http://darkinsanity.netii.net/xenon/xenon.zip _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 25.08.2009, 18:49 Titel: |
|
|
Ich denke mal, Ungenauigkeiten kommen vor allem dadurch zustande, dass ja immer eine (unkalkulierbare) Lücke zwischen den zwei Abfragen auftritt. Du kannst ja mal SCREENEVENT (EVENT_MOUSE_MOVE) probieren, ob das genauer ist. Habe aber bisher noch nie damit gearbeitet. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 26.08.2009, 12:20 Titel: |
|
|
Danke für den Tipp - das kannte ich bisher nicht.
Mit Koordinaten sind vermutlich Pixel gemeint? Das ist schlecht, ich hätte das nämlich gerne unabhängig von der Auflösung. _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 26.08.2009, 12:28 Titel: |
|
|
Der Trick ist, dass man mit einem Abstraction Layer arbeitet, das heißt, du überall Auflösungsunabhängig arbeitest, indem du deine eigenen Funktionen schreibst, die z.B. die Pixelwerte in koordinaten zwischen -1 und 1 umrechnen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 01.09.2009, 12:38 Titel: |
|
|
hm, ich glaube ich muss mein Problem etwas genauer beschreiben (hab ich oben nicht so ausführlich gemacht weil ich nur sehr wenig Zeit hatte).
Wie gesagt mach ich das ganze bisher mit GETMOUSE. Das funktioniert einigermaßen, aber es ist eben abhängig von der Auflösung. Mit 1280x1024 hab ich dann eine höhere Mausgenauigkeit als bei 800x600. Ich hätte aber gerne, dass die Maus immer gleich genau ist, egal bei welcher Auflösung.
Da das ganze eben auflösungsabhängig ist, kann ich auch die Genauigkeit von neuen Mäusen nicht ausnutzen. Im Dokument "Taking Advantage of High DPI Mouse Movement" aus dem DirectX SDK wird als Ausweg die "WM_INPUT"-Message gezeigt, die Mausbewegungen angeblich direkt vom HID-Stack nimmt und so hochauflösende Daten ausspuckt.
Das ist ja eigentlich genau das was ich will, aber wie bekomme ich so etwas mit FreeBASIC hin? Und dann auch noch so dass es sowohl unter Windows als auch unter Linux arbeitet? _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
|