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