Сообщения на форуме пользователя Andrey (258 стр.)
Вопрос по DirectInput | 17 авг. 2004 | 19:04 | #0 |
---|
Подключаю заголовочные файлы и линковку нужных библиотек:
#include <dinput.h> #pragma comment(lib , "dinput8.lib") #pragma comment(lib , "dxguid.lib") #pragma comment(lib , "winmm.lib") Инициализирую: [code = cpp] DirectInput::DirectInput() { //... hInstance = :: GetModuleHandle(NULL); _log -> Report("Инициализация устрйства DirectInput: ", NO_TIME); hr = DirectInput8Create(hInstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**) inputObject, NULL ); switch (hr) { case DIERR_BETADIRECTINPUTVERSION: _log -> Report("Плохая версия DirectInput\n", NO_TIME_ERROR); break; case DIERR_INVALIDPARAM: _log -> Report("Неправильная версия DirectInput\n", NO_TIME_ERROR); break; case DIERR_OLDDIRECTINPUTVERSION: _log -> Report("Старая версия DirectInput\n", NO_TIME_ERROR); break; case DIERR_OUTOFMEMORY: _log -> Report("Нехватает памяти\n", NO_TIME_ERROR); break; case DI_OK: _log -> Report("Ok\n", NO_TIME); DIOk = true; break; default: _log -> Report("Неизвестная ошибка\n",NO_TIME_ERROR); //... } |
Далее создаю мышь и клавиатуру
bool Mouse::CreatDirectInput() { _log -> Report("Создание устройства DirectInput Мышь: ", _OK); if (!inputObject || inputObject->CreateDevice (GUID_SysMouse, &mouseDevice, NULL )!=DI_OK { _log ->Report("Не удалось создать\n",NO_TIME); DIOk = false; return false; } _log -> Report("Ок\n",NO_TIME); _log -> Report("Установка формата данных для мыши:", NO_TIME); //Установка формата данных для мыши if (mouseDevice -> SetDataFormat(&c_dfDIKeyboard) != DI_OK) { _log -> Report("Не удалось установить\n", NO_TIME_ERROR); DIOk = false; return false; } _log ->Report("Ок\n",NO_TIME); // Установка уровня кооперации _log ->Report("Установка уровня кооперации:",_OK); if (mouseDevice->SetCooperativeLevel(hWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE)!= DI_OK) { _log ->Report("Не удалось установить режим\n", NO_TIME_ERROR); // DIOk = false; return false; } _log ->Report("Ок\n",NO_TIME); if (mouseDevice) mouseDevice -> Acquire();//Взять под контроль устройство return true; } bool Keyboard::CreatDirectInput() { _log -> Report("Создание устройства DirectInput Клавиатура:", _OK); if (!inputObject || inputObject->CreateDevice(GUID_SysKeyboard, &keyboardDevice, NULL )!= DI_OK) { _log ->Report("Не удалось создать\n",NO_TIME); DIOk = false; return false; } _log -> Report("Установка формата данных для клавиатуры: ", _OK); // Установка формата данных для клавиатуры if (keyboardDevice -> SetDataFormat(&c_dfDIKeyboard) != DI_OK ) { _log ->Report("Не удалось установить\n", NO_TIME_ERROR); DIOk = false; return false; } _log -> Report("Ок\n", NO_TIME); // Установка уровня кооперации _log -> Report("Установка уровня кооперации: ",_OK); if (keyboardDevice -> SetCooperativeLevel(hWnd, DISCL_FOREGROUND| DISCL_EXCLUSIVE)!= DI_OK) { _log ->Report("Не удалось установить режим\n", NO_TIME_ERROR); //DIOk = false; return false; } _log -> Report("Ок\n", NO_TIME); if (keyboardDevice) keyboardDevice -> Acquire();//Взять под контроль устройство return true; } |
Далее использую клавиатуру используя метод
HRESULT Keyboard::GetStat() { //char keys[256] - объявленный массив буфера клавиатуры if (DIOk) { return keyboardDevice -> GetDeviceState(sizeof(keys),keys); } else return 0; }
Использовании мыши
//Получить состояние мыши HRESULT Mouse::GetStat() { DIMOUSESTATE ms; HRESULT h; if (DIOk) { h = mouseDevice -> GetDeviceState(sizeof(ms), &ms); if (h == DI_OK) SetMouseXY(ms.lX, ms.lY); //Установка координат мыши return h; } return 0; }
в лог файле записывается что не возможно установит кооперацию клавиатуры и мыши
Вопрос почему не работает ни клавиатура ни мышь.
Скажите что я делаю не так
Спасибо заранее
С Уважением Андрей
Правка: 18 авг. 2004 9:16
Вопросы по камере | 17 авг. 2004 | 14:58 | #9 |
---|
Вопрос по С++ | 17 авг. 2004 | 8:58 | #2 |
---|
>*_Winnie вывешивает транспарант "Купи Страуструпа! Купи Страуструпа! RTFS"
Ну зачем так на начинающего.
kronos_vano
Еще нужно добавить нахождение обратной матрицы,транспонированной.
Перегрузить операторы для перемножения 2 матриц,перемножение на число,сложение 2 матриц,перемножение на вектор и т.д.
Правка: 17 авг. 2004 9:00
Кто-нибь уже сделал что-нибудь РЕАЛЬНОЕ. Не скромничайте, хвастайтесь! | 17 авг. 2004 | 8:52 | #21 |
---|
одна игра еще не закончена.Пробую первый движок писать
Правка: 17 авг. 2004 15:00
Вопросы по камере | 17 авг. 2004 | 8:42 | #8 |
---|
>че-то я не понял, почему кватернионы не рулят?
Они то рулят еще как!!! правда я еще их не применял а только освоил я хочу пока с векторами разобраться
Ты в моек коде не знаешь что исправить?
Пытаюсь найти работу в Брянске. | 17 авг. 2004 | 8:38 | #4 |
---|
Sutugor
Есть одна компания пишет игры под мобиьные телефоны на Java.В БГТУ (Бывший БИТМ)
на кафедре "ИПО" Есть преподователь Израилев В.Я. вот он там директор.
Пытаюсь найти работу в Брянске. | 17 авг. 2004 | 8:30 | #3 |
---|
Sutugor
Народ я тоже из Брянска!!!!! давайте вместе то нибудь думать!!!!!
вот мой ICQ 242306388
вот мыло
Проекту нужны участники | 16 авг. 2004 | 20:40 | #35 |
---|
Ок
Вопросы по камере | 16 авг. 2004 | 20:31 | #6 |
---|
Спасибо я к тебе давно в Асю стучусь!!!!Дело в том что с матрицей более оптимизировано получается.
У темя я так понял углы Эйлера?Они имеют ограничения при угле 90 градусов что там происходит и поворот получается не правильный.Более элегантно сделать повороты на кватерионах,что я в будущем попытаюсь сделать.
>у тя тут какие-то матрицы - зачем(если не лень будет объясни, я без них работаю)...
Ты наверняка вызываешь для поворота несколько раз функцю glRotate,а это каждый раз перемножается матрица камеры а это вычислительные затраты процессора.А я меняю вектора а потом один раз перемножаю матрицу.В этом выигрыш по скорости.Вообще-то матрица камеры должна быть по идее я во многих движках ее видел.
>Еще раз говорю - ламер я, не надо смеяться, надо объяснить почему я не прав =))))))
Это сайт не для этого создан.И я тут не для этих целей.
В общем стучись в Асю поговорим :)
Кто нибудь из Брянска Есть | 16 авг. 2004 | 18:20 | #0 |
---|
Вопросы по камере | 16 авг. 2004 | 17:14 | #4 |
---|
Вопросы по камере | 16 авг. 2004 | 13:24 | #3 |
---|
>Ты по событию мыши вызываешь перерисовку сцены?
Нет в фоновом цикле
>Покажи код, где ты вычисляешь позицию камеры.
Вот код
void Camera::Move(UINT nChar) { const GLfloat dz = 3*_dx; const GLfloat dx = 3*_dx; switch (nChar) { case 0x25: Position -> x -= dx; xpos = - dx; break; case 0x27: Position -> x += dx; xpos = dx; break; case 0x28: Position -> z -= dz; zpos = - dz; break; case 0x26: Position -> z += dx; zpos = dz; } }
>Да, но для шутерного вида лучше оставить углы.
что такое шутерный вид?
Правка: 16 авг. 2004 13:29
Есть кто из Орла? | 16 авг. 2004 | 12:32 | #1 |
---|
C Брянска это далеко Будет считаться?
мне стало интересно а во что предпочитают играть те кто игры создаёт ?)) | 16 авг. 2004 | 12:24 | #22 |
---|
Вопросы по камере | 16 авг. 2004 | 11:51 | #1 |
---|