Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.11.2004, 18:52

Fehler in Tribase Eingabeklasse

Alle (Beispiel-)Programme, die tbDirectInput nutzen, funktionieren bei mir nicht. Die Log-dateien melden nach erfolgreicher Init der Eingabeklasse Fehler bei Aufruf der zentralen Eingabe-Gerätestatusabfrage.
(
FEHLER: Der Aufruf von pDevice->GetDeviceState verursachte den DirectX-Fehler ERROR_READ_FAULT & DIERR_INPUTLOST! Beschreibung: Access to the device has been lost. It must be re-acquired.
)
Das Abzählen der Eingabegeräte bringt zu Tage, daß nach Maus und Tastatur 5 USB-Geräte (vermutlich die des Kartenlesegeräts) aufgelistet werden (einen Joystick gibt es bei mir nicht). Mir ist nicht ganz klar, wieso die Tribase-Klasse beim Abzählen der Joysticks DI8DEVCLASS_ALL verwendet statt DI8DEVCLASS_GAMECTRL. Somit werden wohl die USB-Geräte fälschlich als Joysticks abgelegt, die natürlich nicht abgefragt werden können (und auch ein re-acquired nicht hilft).

mfg

2

27.11.2004, 19:08

Wenn es nur mit DI8DEVCLASS_GAMECTRL aufgelistet würde, könntest du nicht damit spielen. Zu DI8DEVCLASS_GAMECTRL gehören nämlich nicht z.B. Tastaturen.

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

3

27.11.2004, 22:47

geh mal in den gerätemanager und lösch alles bis auf deine maus und tastatur was unter eingabegeräte steht.

4

28.11.2004, 07:42

Man kann natürlich alle USB-Interfaces im Gerätemanager deaktivieren, was das Problem nicht beseitigt: Es wird das System nach allen Geräten durchsucht. Die Callback-Funktion siebt per vordefinierter GUID Maus und Tastatur korrekt heraus und initialisiert alles andere ohne Prüfung als Joystick. Deswegen scheint mir ein separates Abzählen der Joysticks mit DI8DEVCLASS_GAMECTRL sinnvoller, was natürlich voraussetzt, daß die Initialisierung von Tastatur und Maus aus der Callback-Funktion genommen werden muß. Warum will Tribase die Standardgeräte Maus und Tastatur abzählen?

5

29.11.2004, 14:05

Damit man ein mit TriBase erstelltes Spiel spielen kann, wenn man keinen Joystick hat.

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

29.11.2004, 16:51

Zitat

Warum will Tribase die Standardgeräte Maus und Tastatur abzählen?


Ich glaube, Fra Nuntius meinte hier, dass die Standardgeräte nicht abgezählt werden müssen, weil es eben Standardgeräte sind, also Geräte, die an jedem Rechner angeschlossen sind (oder zumindest sein sollten).
Wenn man davon ausgeht (was man zwar als sauberer Programmierer nicht tun sollte), könnte man Maus und Tastatur explizit initialisieren und dann nur noch die Game-Controller abzählen lassen.

Ist das das, was Du meintest, Fra Nuntius?

7

12.12.2004, 15:16

Absolut korrekt, Steven77!!! Tastatur wird über GUID_SysKeyboard und Maus über GUID_SysMouse initialisiert (Standardgeräte gehören zum Rechner, selbst wenn sie nicht angeschlossen sind, scheitert CreateDevice, was abzufragen wäre). Joysticks oder anderweitige Eingabegeräte sind keine Standardgeräte, es gibt keine System_GUID, weswegen hier das Abzählen notwendig wird (dann aber nur speziell für Gamecontroller!!!). Es scheint logisch, Standardgeräte als gegeben vorrauszusetzen und separat zu initialisieren und danach eventuelle weitere Spieleingabegeräte zu ermitteln, als von vornherein alles mit der gröbsten Auflösung abzugrasen, ohne sicher zu sein, daß es für die Anwendung zuträglich wäre.

mfg

Werbeanzeige