Input multipiattaforma con OIS - 1a parte
Oggi parliamo di OIS una libreria per l'input multipiattaforma (più precisamente Linux, Window e MacOS anche se quest'ultimo solo parzialmente supportato), gestisce svariate periferiche (tastiera, mouse, joystick, wiimote, etc.) e dispositivi dotati di forcefeedback, è scritta in c++ ed è orientata ad oggetti.
Nota: negli esempi tratto la compilazione e/o utilizzo per Linux, ma non ci sono sostanziali differenze dall'utilizzo su Windows, in ogni caso nel pacchetto dei sorgenti di OIS è presente il file "readme.txt" con tutte le informazioni necessarie.
L'utilizzo neanche a dirlo è semplicissimo, iniziamo con lo scaricare i sorgenti da qui:
http://sourceforge.net/projects/wgois/files/
una volta scompattato l'archivio in una directory a scelta, eseguiremo la compilazione con:
./bootstrap
./configure
./make && make install
ovviamente, per eseguire il make install dovremo avere il privilegi di root.
Per utilizzare OIS nel nostro programma dovremo includere il suo header:
#include "OIS/OIS.h"
Creare una lista di parametri con le nostre preferenze da utilizzare per la creazione dell'inputManahger, e cosa molto importante dovremo passare ad OIS l'id di una finestra già aperta su cui agganciare l'input (nel caso di Window un HWND):
char windowIdStr[40];
sprintf(windowIdStr, "%u", windowId);
OIS::ParamList pl;OIS::InputManager* oisInputManager = OIS::InputManager::createInputSystem( pl );
pl.insert(std::make_pair(std::string("WINDOW"), std::string(windowIdStr)));
#if defined OIS_WIN32_PLATFORM
pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND" )));
pl.insert(std::make_pair(std::string("w32_mouse"), std::string( hideMouse ? "DISCL_EXCLUSIVE" : "DISCL_NONEXCLUSIVE" )));
pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_FOREGROUND")));
pl.insert(std::make_pair(std::string("w32_keyboard"), std::string("DISCL_NONEXCLUSIVE")));
#elif defined OIS_LINUX_PLATFORM
pl.insert(std::make_pair(std::string("x11_mouse_grab"), std::string( grabInput ? "true" : "false" )));
pl.insert(std::make_pair(std::string("x11_mouse_hide"), std::string( hideMouse ? "true" : "false" )));
pl.insert(std::make_pair(std::string("x11_keyboard_grab"), std::string( grabInput ? "true" : "false" )));
pl.insert(std::make_pair(std::string("XAutoRepeatOn"), std::string("true")));
#endif
In sostanza i vari paramentri sono sia per la versione Win32 che per linux e servono per specificare se effettuare il grab della tastiera e del mouse e se nascondere il puntatore del mouse.
To be continued...
0 commenti:
Posta un commento