2009-03-28 5 views
-1

может ли кто-нибудь сказать мне, как?Как использовать клавиатуру в качестве команды для увеличения opengl?

я никогда не делал этого раньше, поэтому я не уверен, как какую библиотеку использовать и как вызвать команду, что нажата клавиша как команда, а не ввод ..

я пишу OpenGL программа в Visio C++

ответ

3

Масштабирование в OpenGL и получение входных сигналов в режиме буксировки - это две разные вещи. Вы можете использовать любой графический интерфейс (MFC, wxWidgets, Qt, .Net) для записи событий клавиатуры в качестве входных данных. Затем вы можете вызвать функции OpenGL (glTranslate), чтобы изменить масштаб, а затем перерисовать все в своей сцене.

1

В Win32 вы можете сделать что-то следующее, чтобы получить состояние клавиши:

#define KEY_DOWN(vKey) (GetAsyncKeyState(vKey) & 0x8000) ? true : false 
#define KEY_UP(vKey)  (GetAsyncKeyState(vKey) & 0x8000) ? false: true 

vKey является INT, представляющее значение клавиш ASCII.

Когда вы знаете, что ключ «зума» нажата, то вы можете сделать перевод

glPushMatrix(); 
    glTranslate3f(5.0,0.0,0.0); // moves the camera +5 down the x-axis 
    ... 
glPopMatrix(); 

Реально нужно использовать более сложный код, чтобы сделать масштабирование, так как это, конечно, зависит на направление просмотра. Также у вас будет более сложная функция состояния ключа, которая будет сидеть в вашем цикле сообщений и удерживать состояние всех ключей, которые будет использовать ваше приложение, включая положение мыши и кнопки мыши.

+0

Где я могу получить ссылку на это ?? – noob88

+0

Ну, сама функция может быть найдена с помощью быстрого google. http://msdn.microsoft.com/en-us/library/ms646293(VS.85).aspx Однако это может быть не лучшее направление. Вы должны быть более конкретными о том, как создать окно opengl. Вы используете GLUT, например? –