JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DirectInput - Absolute Mausposition abfragen
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 14:53    Titel: Antworten mit Zitat

Scheint es, als ob dein Rechner zu langsam waere fuer die Mausabfrage? Ruckelt und zuckelt es meine ich gar entsetzlich, so als ob 100% Prozessorauslastung vorhanden waere? Oder wie meintest du das mit krackseln Wink

EDIT:
Noch ne Frage. Wie initialisierst du die Devicedaten? Mit GetDeviceState, oder GetDeviceData? Selbes Problem hatte ich naemlich auch wieder Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 15:10    Titel: Antworten mit Zitat

Ein Delta beschreibt, umwieviel sich eine Variable verändert hat. z.B. bei der Position eines Objektes wäre das:

deltaPos = neuPos - altPos
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 15:17    Titel: Antworten mit Zitat

@Hazel: dann ist es ja so wie ich geschrieben hab, aber was ist jetzt mim ALgo? Wink

Nee mein Rechner ist nict zu lahm 1700XP+ und ich hab 58 fps

Code:

bool DD_INPUT_ENGINE::Init_Mouse(HWND hWnd)
{
   // Erstellen des Maus-Interface
   if(FAILED(Object_lpDI->CreateDevice(GUID_SysMouse,&Object_lpDIDevice_Mouse,NULL)))
   {
      Error("Fehler - beim Erstellen des Maus-Objekts");
      return true;
   }

   // Datenformat stezen
   if(FAILED(Object_lpDIDevice_Mouse->SetDataFormat(&c_dfDIMouse)))
   {
      Error("Fehler - beim Setzen des Datenformats der Maus");
      return true;
   }

   // Kooperationsebene setzen
   if(FAILED(Object_lpDIDevice_Mouse->SetCooperativeLevel(hWnd,
                                    DISCL_FOREGROUND |
                                    DISCL_NONEXCLUSIVE)))
   {
      Error("Fehler - beim festlegen der Kooperationsebene der Maus");
      return true;
   }



   // Eigenschaften für das Gerät festlegen (Puffergröße)
    DIPROPDWORD DIProperties;
    ZeroMemory(&DIProperties,sizeof(DIProperties));
    DIProperties.diph.dwSize       = sizeof(DIPROPDWORD);
    DIProperties.diph.dwHeaderSize = sizeof(DIPROPHEADER);
    DIProperties.diph.dwObj        = 0;
    DIProperties.diph.dwHow        = DIPH_DEVICE;
    // Puffergröße wird in Dateneinheiten festgelegt
    DIProperties.dwData            = 16;

 
    // Puffergröße für Mauseingaben setzen
    Object_lpDIDevice_Mouse->SetProperty(DIPROP_BUFFERSIZE, &DIProperties.diph);


    // Kontrolle über Maus wird übernommen
    Object_lpDIDevice_Mouse->Acquire();



   return true;
}

_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 15:21    Titel: Antworten mit Zitat

Ups, hab ich vergessen. :P

Also ich mach's ganz simpel, und zwar habe ich nur einen Grenzwert der nicht überschritten werden darf und einen Multiplikator:

Code:

if(myAbs(MouseDX) < threshold)
   MouseDX = MouseDX * multiplier;

MouseX += MouseDX;


Da der Held in meinem Spiel mit einer Kanone rumrennt kann man auf diese Weise die Schwere der Waffe simulieren.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 15:31    Titel: Antworten mit Zitat

Millenium,

du hast mich falsch verstanden. Ich hab hier auch nen 3200er rumstehen, trotzdem war es so, als ob die Maus ueberhaupt nich den Bewegungen nachkommen wuerde, die ich mache. Das meinte ich.

Der Fehler war das ich GetDeviceData anstatt GetDeviceState genommen hatte. Seit dem habe ich mit selber arbeitsweise wie deiner Routine keine Probleme mehr.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 16:07    Titel: Antworten mit Zitat

Verbesserung meiner Erklräung, wenn ich z.B. ganz schnell nach links oben mit der Maus gehe, dann bewegt sich die Maus erst den großen Sprung auf der y-Achse hoch und dann erst auf der x-Achse nach links. Also er macht nicht beides in einem Schritt sondern nimmt die Achsen irgendwie getrennt...

Ja ich machs mit der GetDeviceData...aber wie macht man das mit der anderen Funktion in der MSDN darf ich da von Siete zu Seite springen wo immer andere Stukturen beschrieben werden, die man dafür braucht! Sad
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 17:57    Titel: Antworten mit Zitat

Hmm benutzt du die DX9 SDK-Hilfe nicht? Nur so als Frage Wink - aber egal. Dummes gefrage hilft dir auch ned Wink

Du musst ne State Structure initialisieren, wie immer (in meinem Fall fuer 4 Buttons - DIMOUSESTATE xxx)

Und dann statt GetDeviceData, GetDeviceState initialisieren.

xxx_My_Device->GetDeviceState(sizeof(xxx), &xxx));

Und dann noch die Koordinaten (siehe Hazel in etwa) hochzaehlen:

MyMouse.x += xxx.lX; //Wie in DIMOUSESTATE-Structure definiert
MyMouse.y += xxx.lY;

So weit hab ichs. Außerdem setzte ich keine breaks beim setzen der Koordinaten, d.h. es werden immer alle Achsen gesetzt auf einmal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 18:15    Titel: Antworten mit Zitat

@X-FILE: BIG THX! Very Happy

Hat super funktioniert!

Ja ich hab auf einmal ein Problem mit der Microsoft Platform SDK, (3Cds die ich mir runtergeladen habe) aber aufeinmal hat der manche Funktionen nicht mehr drinnen und dann muss ich wieder in der Internet SDK suchen und das ist nicht so komfortabel... Sad
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 06.08.2003, 19:11    Titel: Antworten mit Zitat

Freut mich dass ich helfen konnte. Langsam kann auch ich mal was sagen, da ich auch schon soooo viele Probleme durchgemacht hab Wink

Also ich hab die SDK-Hilfe vom normalen DX9 SDK. Die 3CDs sind die besser?? Klaere mich auf. Sonst nutze ich die VC++ MSDN (die 3 CDs)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 07.08.2003, 10:11    Titel: Antworten mit Zitat

Ich habe mir die 3CDs aus dem News Bereich hier runtergeladen...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum