分别通过按下键盘的A,D,W,S键 控制矩块左右上下移动 opengl c++
时间: 2023-09-03 14:07:29 浏览: 54
以下是一个简单的实现:
```cpp
#include <GL/glut.h>
// 全局变量,表示矩形的位置和大小
float rect_x = 0.0f;
float rect_y = 0.0f;
float rect_w = 0.2f;
float rect_h = 0.2f;
// 绘制矩形
void drawRect() {
glBegin(GL_QUADS);
glVertex2f(rect_x, rect_y);
glVertex2f(rect_x + rect_w, rect_y);
glVertex2f(rect_x + rect_w, rect_y + rect_h);
glVertex2f(rect_x, rect_y + rect_h);
glEnd();
}
// 键盘回调函数
void keyboard(unsigned char key, int x, int y) {
switch (key) {
case 'a':
case 'A':
rect_x -= 0.1f;
break;
case 'd':
case 'D':
rect_x += 0.1f;
break;
case 'w':
case 'W':
rect_y += 0.1f;
break;
case 's':
case 'S':
rect_y -= 0.1f;
break;
default:
break;
}
glutPostRedisplay(); // 通知OpenGL重新绘制窗口
}
// 绘制回调函数
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 1.0f, 1.0f); // 设置绘制颜色为白色
drawRect(); // 绘制矩形
glFlush(); // 刷新缓冲区,将绘制结果显示在窗口上
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("Moving Rectangle");
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // 设置背景颜色为黑色
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); // 设置正交投影
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutKeyboardFunc(keyboard); // 注册键盘回调函数
glutDisplayFunc(display); // 注册绘制回调函数
glutMainLoop();
return 0;
}
```
这样,你就可以通过按下键盘上的A、D、W、S键来控制矩形的左右上下移动了。