Hallo, ich habe einen (ein bisschen) älteren Rechner. Noch läuft auf ihm XP. Es soll aber demnächst ein neueres Windows aufgespielt werden. Auf diesem Rechner habe ich bereits für DirectX_9 programmiert. Nun möchte ich ein ähnliches Programm erneut schreiben (den alten Code kann ich leider nicht mehr verwenden). Jetzt stehe ich allerdings vor der Frage ob ich gleich das DirectX11_SDK verwenden soll. Schließlich möchte ich vermeiden, irgendwann das ganze neu schreiben zu müssen, weil sich eventuell die API geändert hat. Ein neuer Rechner wird schließlich ganz bestimmt mal kommen. Glaubt ihr es macht Sinn DirectX_11 zu verwenden? Oder bringt das eher nichts, da ich mit meinem Rechner eh nicht die Funktionen vom neuen 11’er nutzen kann?
Du solltest besser gleich OpenGL benutzen. Sonst hast du in ein paar Jahren wieder: >Schließlich möchte ich vermeiden, irgendwann das ganze >neu schreiben zu müssen
OpenGL geht für mich leider nicht. Genau genommen benötige ich (zur Zeit) nur die Ansteuerung für Joystick und vor allem die Ansteuerung dessen force-feedback.
Wenn du nur Joystick Ansteuerung machst arbeitest du wohl eher mit DirectInput statt mit DX9 nehme ich an? Der Nachfolger von DirectInput heißt XInput aber soweit ich das gesehen habe kann man damit nur Xbox360 Controller ansteuern und nicht irgendwelche Joysticks. DirectInput ist aber auch noch in Windows 8.1 vorhanden also ein Umstieg von Windows XP zu etwas neuerem ist kein Grund von DirectInput wegzugehen.
T.roll schrieb: > Du solltest besser gleich OpenGL benutzen. > Sonst hast du in ein paar Jahren wieder: Steht OpenGL nicht gerade vor einem Komplettumbau (u.A. wegen Mantle)? Daher würde ich im Moment nicht mit OpenGL einsteigen... DirectX bietet darüber hinaus ein rundes Gesamtpaket, von der Eingabe über Audio und Video bis hin zu 3D. Ich würde daher zu DX 11 tendieren.
Boris P. schrieb: > T.roll schrieb: >> Du solltest besser gleich OpenGL benutzen. >> Sonst hast du in ein paar Jahren wieder: > > Steht OpenGL nicht gerade vor einem Komplettumbau (u.A. wegen Mantle)? > Daher würde ich im Moment nicht mit OpenGL einsteigen... Generell steht da wohl ein Generationenwechsel an. OpenGL wird komplett umgebaut, und neben Mantle gibt's noch andere neue APIs, die angeblich erheblich schneller als die Klassiker OpenGL und DirectX sein sollen. Da wird sich in naher Zukunft wohl so einiges tun. Davon bleibt man bei DirectX aber vermutlich genauso wenig verschont. > DirectX bietet darüber hinaus ein rundes Gesamtpaket, von der Eingabe > über Audio und Video bis hin zu 3D. Dafür allerdings ausschließlich unter Windows. Und OpenGL zusammen mit SDL kann auch schon einiges, evtl. noch mit OpenAL für den Sound.
Rolf Magnus schrieb: > Dafür allerdings ausschließlich unter Windows. Und OpenGL zusammen mit > SDL kann auch schon einiges, evtl. noch mit OpenAL für den Sound. Klar, es gibt für alles Alternativen. Aber bei DX folgt zumindest jede API dem gleichen Programmierkonzept und den gleichen Namenskonventionen. Das macht das Leben leichter. Da der TO ja bisher auch auf DX gesetzt hat, scheint Windows-Only ja kein Problem für ihn zu sein (sonst wäre DX natürlich sofort aus dem Rennen).
:
Bearbeitet durch User
Boris P. schrieb: > ...scheint Windows-Only ja kein Problem für ihn zu sein... Na ja... ist ein wenig verzwickt :) Genau genommen habe ich ein Programm in Qt geschrieben. Qt unterstützt jedoch nicht die Ansteuerung von Joysticks mit Force-Feedback. Ich habe zwar noch keine Anwendung für ein anderes OS als Windows, hätte es mir aber gerne offen gehalten. Nun war mein Gedanke den Joystick per DirecX anzusteuern und die zwei Programme über local network (nennt sich doch so?), also rein auf dem Rechner selbst, miteinander kommunizieren zu lassen. Sollte irgendwann ein anderes OS in Frage kommen, bräuchte ich also nur einen "kleineren" Teil neu schreiben.
brechbunkt schrieb: > un war mein Gedanke den Joystick per DirecX anzusteuern und die zwei > Programme über local network (nennt sich doch so?), also rein auf dem > Rechner selbst, miteinander kommunizieren zu lassen. Yikes! Das klingt nicht so besonders geschickt... Warum willst du das in zwei programme aufteilen? Du kannst ja auch in deiner Qt Anwendung mit DirectX (XInput) arbeiten. Aber es gibt sicherlich auch eine portable Lösung um einen Joystick einzubinden (SDL?)...
:
Bearbeitet durch User
Kurzes googlen hat dieses hier gefunden: http://en.wikipedia.org/wiki/Object_Oriented_Input_System Kleine C++ library, die unter Linux und Windows diverse Eingabegeräte unterstützt, einschliesslich Force Feeback. Wird auch von Ogre3D genutzt.
In dem Modualisieren sehe ich hier auch keinen Vorteil, nur zusätzlichen Aufwand und Fehlerquellen.
Von SDL hatte ich zuvor noch nie etwas gehört. Macht aber einen ganz guten Eindruck. Um die Kommunikation mit dem Qt-Programm würde ich hier natürlich ebenfalls nicht rumm kommen. Eigentlich hatte ich mich zuvor mit Google auf die Suche gemacht und war nun der Meinung, dass XInput nicht in Qt eingebunden wurde. Dank deinen Hinweis habe ich nun aber noch mal geschaut und ein "Qt XInput Extension 0.0.1" gefunden. Die Versionsnummer macht mir allerdings ein wenig Bauchschmerzen. Erfahrungsgemäß sind die Kinderkrankheiten anfangs immer so hoch, dass man immer nur auf Probleme stößt und hier und da mit einer "Frickel-Lösung" aushelfen muss. Nach bereits bekannten Lösungswegen googlen hilft dann auch immer nicht viel ;)
So wie ich das sehe, können durch die Einbindung von XInput im Qt zwar die Achsen und die Buttons eingelesen werden, aber die Ansteuerung für das force-feedback wurde nicht implementiert.
Warum brauchst du XInput eingebunden in Qt? Verwende doch einfach direkt XInput in deinen Funktionen, die das brauchen. Oder was soll überhaupt durch den Joystick gesteuern werden? Wenn man damit die Menüelemente wählen soll müsste man tatsächlich gucken, wie man die Joystickbewegungen an Qt weiter gibt aber selbst das müsste machbar sein. Kommunikation zwischen XInput/DirectInput/SDL und dem Rest deines Programms findet einfach über Funktionsaufrufe statt. Da noch einen Netzwerklayer zwischen zu schieben macht alles nur viel komplizierter und bringt überhaupt nichts.
sebi707 schrieb: > ...Oder was soll überhaupt durch den Joystick gesteuern werden? Ein kleiner Roboter auf vier Rädern. Wird anhand der Ultraschallsensoren ein Hindernis in der Nähe erkannt, möchte ich diese durch Rückmeldung vom force-feedback spürbar machen. sebi707 schrieb: > Warum brauchst du XInput eingebunden in Qt? Verwende doch einfach direkt > XInput in deinen Funktionen, die das brauchen. ... Kommunikation zwischen XInput/DirectInput/SDL und dem Rest deines > Programms findet einfach über Funktionsaufrufe statt. Ich kann das ganze dann also ganz normal mit Funktionen wie alle anderen aufrufen? Einfach lib einbinden und los? Da muss ich mich mal schlau machen wie der Code überhaupt aussehen muss. Werde mal nach ein paar Beispielen googlen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.