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

02.08.2008, 17:26

[Erledigt] Input: WinAPI oder DirectInput

Hallo Zusammen

Titel ist Thema :)
Ehe ich beginne die Callback-Funktion zu erweitern, würde es mich interessieren, wo eigentlich der Unterschied zwischen WinAPI und DirectInput liegt. Es geht mir vorerst nur um die Tastatur und die Maus.

Auf was sollte man wann setzen? Oder spielt es gar keine Rolle?

Gruss neptun

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

02.08.2008, 17:33

DirectInput basiert auf der WinAPI.

DirectInput ist aber veraltet und wird nicht mehr weiterentwickelt.

Kannst also getrost direkt mit der WinAPI programmieren.

Anonymous

unregistriert

3

02.08.2008, 17:35

Zitat von »"drakon"«

DirectInput basiert auf der WinAPI.
*tilt*

Zitat von »"drakon"«

DirectInput ist aber veraltet und wird nicht mehr weiterentwickelt.
*doppel-tilt*

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

02.08.2008, 17:59

Zitat von »"unsigned long"«

Zitat von »"drakon"«

DirectInput basiert auf der WinAPI.
*tilt*

Zitat von »"drakon"«

DirectInput ist aber veraltet und wird nicht mehr weiterentwickelt.
*doppel-tilt*


Erinnert mich gerade an das Flipper Spiel, dass bei einem Windows mal dabei war.. :D

Aber wie meinst du? - Ich hatte das so in etwa im Kopf, aber mich nicht gross darum gekümmert, was da nun genau los ist.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

02.08.2008, 18:09

ersteres zweifle ich auch an. beim zweiten hab ich aber auch ähnliches gelesen. wobei benutzen tu ichs auch.

Anonymous

unregistriert

6

02.08.2008, 18:10

drakon
tilt in dem sinne, das das alles nonsens ist was du gesagt hast.

7

02.08.2008, 20:24

Zitat von »"unsigned long"«

drakon
tilt in dem sinne, das das alles nonsens ist was du gesagt hast.

Also zumindest mit der 1. Aussage hat er recht, DirectInput basiert mindestens seit Windows 2000 (oder wars doch erst XP?) auf der WinAPI. Mit Hilfe eines Debuggers dürfte man das leicht feststellen können. Verwendet werden allerdings nicht die "normal" WM_CHAR oder wie sie heißen, sondern [url=http://msdn.microsoft.com/de-de/library/ms645536%28en-us,VS.85%29.aspx]Raw Input[/url].

Alle Angaben ohne Gewähr, schließlich verwende ich schon länger kein Windows mehr :)

Anonymous

unregistriert

8

02.08.2008, 20:27

Florianx
Ich möchte ZU gerne sehen, wie man Force Feedback mit Win32 API realisiert. Es ist zwar im Platform SDK enthalten, basiert jedoch nicht auf der Win32 API

9

02.08.2008, 20:49

http://msdn.microsoft.com/en-us/library/bb206183.aspx:

Zitat

DirectInput is a set of API calls that abstracts input devices on the system. Internally, DirectInput creates a second thread to read WM_INPUT data, and using the DirectInput APIs will add more overhead than simply reading WM_INPUT directly.


Für Joysticks, die Force Feedback unterstützten, wird allerdings tatsächslich noch direkt auf die Treiber zugegriffen.

10

02.08.2008, 23:38

Da es anscheinend nicht so eine Rolle spielt, was man nun einsetzt, hab ich mich fürs erste für DirectInput entschieden.

Leider schlägt bereits das linken fehl :-X

Quellcode

1
2
3
4
5
6
7
8
9
    if(FAILED(DirectInput8Create(hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void **) &pDI, NULL)))
    {
        fprintf(g_pLogfile, "[ERROR main] DirectInput Schnittstelle konnte nicht generiert werden\n");
        return(false);
    }
    else
    {
        fprintf(g_pLogfile, "[OK main] DirectInput Schnittstelle wurde generiert\n");
    }


Ich kompiliere mit einem gcc compiler - eingebunden habe ich diese libs:

lib/libdinput8.a
lib/libdinput.a

Fehler:
[Linker error] undefined reference to `IID_IDirectInput8A'

Welche fehlt mir den? Das müsste doch so eigentlich compilierbar sein :<

Werbeanzeige