Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Apr 24, 2024 13:53

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Möglichkeiten für Joystick-Support
BeitragVerfasst: Sa Jul 28, 2012 17:46 
Offline
DGL Member

Registriert: Di Jun 12, 2012 21:26
Beiträge: 112
Programmiersprache: Delphi
Hallo Leute,

ich frage mich, welche Möglichkeiten es gibt, in Delphi die Steuerung über einen Joystick/ein Gamepad zu unterstützen. Im Netz habe ich einige Beispiele mit MMSystem gefunden. Da jedoch MMSystem eines meiner Gamepads nicht erkennen wollte (und alle anderen Programme damit keine Probleme hatten), nutze ich im Moment SDL. Ich hatte mit MMSystem bereits in anderen Bereichen Probleme, und bin daher etwas abgeneigt, MMSystem zu verwenden. Eine gute Alternative wäre Direct Input. Allerdings streube ich mich davor, Direct Input in Verbindung mit OpenGL zu nutzen. Gibt es noch weitere Möglichkeiten?

Viele Grüße
subotai


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jul 28, 2012 19:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Eine gute Alternative wäre Direct Input.

Die aktuelle Variante heißt XInput, welches auch Dinge wie Rumble unterstützt. Zumindest mein Gamepad emuliert im DirectInput-Modus nur eine Tastatur, d.h keine analogen Sticks und kein Rumble. Diese Schnittstelle ist Teil des DirectX SDK. Als Programmierer benutzt habe ich XInput aber bisher nicht.

Zitat:
Allerdings streube ich mich davor, Direct Input in Verbindung mit OpenGL zu nutzen.

Ich sehe da kein Problem. Du musst eben nicht das ganze DirectX SDK initialisieren, sondern nur den Teil den du brauchst.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jul 29, 2012 18:51 
Offline
DGL Member

Registriert: Di Jun 12, 2012 21:26
Beiträge: 112
Programmiersprache: Delphi
Danke für Deine Antwort. Bin heute über die HID-Komponente die der JVCL beiliegt gestolpert. Ich denke, das wäre vielleicht noch eine Alternative. Der erste Eindruck war zumindest ganz gut. Werde mich mal in XInput und/oder die Komponente einarbeiten. Mit SDL war es wesentlich einfacher ;-) , aber wenn ich von SDL unabhängig sein möchte...

Viele Grüße


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jul 30, 2012 07:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
So bist du von XInput bzw. der JVCL abhängig. Beides ist (im gegensatz zu OpenGL) nur auf Windows zuverlässig verfügbar. Ist das besser als SDL?

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jul 30, 2012 16:03 
Offline
DGL Member

Registriert: Di Jun 12, 2012 21:26
Beiträge: 112
Programmiersprache: Delphi
Lord Horazont hat geschrieben:
So bist du von XInput bzw. der JVCL abhängig. Beides ist (im gegensatz zu OpenGL) nur auf Windows zuverlässig verfügbar.

Da hast Du recht. Im Moment tendiere ich auch eher wieder zu SDL. Deshalb entwickle ich mein aktuelles Projekt so, dass es sich ohne zusätzlichen Arbeitsaufwand in einer VCL-Version (ohne SDL) und einer SDL-Version compilieren lässt. Dank OpenGL ist das zum Glück leicht möglich. Auch die Joystick-Unterstützung durch SDL habe ich so gestaltet, dass sie ohne Probleme austauschbar ist. Bin noch unentschlossen ;-)

Ich wollte einfach mal sehen, was es für weitere Möglichkeiten außer SDL gibt. XInput und die HID-Komponente machen (zumindest) auf den ersten Blick einen recht komplexen Eindruck, also viel Einarbeitungszeit. Und Joystick/Gamepad-Unterstützung ist für mich, der mit Konsolen aufgewachsen ist, ein absolutes Muss :P

Viele Grüße


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Aug 02, 2012 13:16 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Was bringen zwei unterschiedliche Versionen? Mach doch nur eine SDL-Version - plattformunabhängig und kleiner als die VCL-Variante.

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Aug 04, 2012 00:21 
Offline
DGL Member

Registriert: Di Jun 12, 2012 21:26
Beiträge: 112
Programmiersprache: Delphi
end hat geschrieben:
Was bringen zwei unterschiedliche Versionen?

Nichts. Ich war mir nur nicht sicher, ob SDL sauber läuft. Hatte kleine Probleme mit verschiedenen DLL's. Aus diesem Grund möchte ich mir einfach die Möglichkeit offenlassen, die VCL-Variante ohne Mehrarbeit nutzen zu können. Für die Programmierung bringt mir das im Moment keine Nachteile. Generell tendiere ich, wie schon geschrieben, sehr dazu zu SDL zurückzukehren ;-)

Viele Grüße


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 15, 2014 13:08 
Offline
DGL Member

Registriert: Di Jun 12, 2012 21:26
Beiträge: 112
Programmiersprache: Delphi
Ist zwar schon eine ganze Weile her, aber hier mein Fazit:

Die HID-Komponente ist super, hat aber einen sehr großen Nachteil: Sie benutzt zum Einlesen einen Timer. Dadurch enstanden letztendlich Probleme beim Lesen der Eingabe. Die Dokumentation ist dürftig. Deshalb habe ich sehr lange gebraucht, um zu verstehen wie das Einlesen des Gamepads/Joysticks funktioniert. Wenn man weiss wie es geht, ist die Implementierung jedoch sehr einfach. Außerdem werden natürlich nur USB-Gamepads unterstützt (wobei das heutzutage vermutlich Standard ist). Interssant ist die Komponente vorallem wenn man andere Eingabegeräte nutzt (Lightgun oder ähnliches)

Bei DirectInput hatte ich das Probleme, dass es nicht alle meine Gamepads erkannt hat. Naja, lag vielleicht auch an meiner Implementierung.

XInput habe ich nie ausprobiert.

Am einfachsten ist es meiner Meinung nach eben immer noch, SDL zu nutzen. Hatte damit bisher nie Probleme.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Apr 15, 2014 14:04 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
DirectInput wird seit Vista oder 7, ich bin mir gerade nicht mehr sicher, scheinbar mit den Windows Messages emuliert.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 44 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.099s | 15 Queries | GZIP : On ]