-1

谁能告诉我怎么做?

我以前从未这样做过,所以我不确定要使用哪个库以及如何调用按键作为指令而不是输入的命令。

我正在用 Visio C++ 编写一个 OpenGL 程序

4

2 回答 2

3

放大 OpenGL 和获取键盘输入是两件不同的事情。您可以使用任何 GUI(MFC、wxWidgets、Qt、.Net)来捕获键盘事件作为输入。然后,您可以调用 OpenGL 函数 (glTranslate) 来更改缩放,然后重绘场景中的所有内容。

于 2009-03-28T10:24:05.543 回答
1

在 Win32 中,您可以执行以下操作来获取键的状态:

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

vKey 是一个表示键 ASCII 值的 int。

当您知道正在按下“缩放”键时,您可以进行翻译

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

实际上,您会使用更复杂的代码来进行缩放,因为这当然取决于视图方向。此外,您将拥有一个更复杂的键状态函数,该函数将位于您的消息循环中并保存您的应用程序将使用的所有键的状态,包括鼠标位置和鼠标按钮。

于 2009-03-28T10:41:35.377 回答