用C语言:利用opengl,写一个通过鼠标放缩的代码
时间: 2024-02-01 17:13:42 浏览: 127
以下是一个基本的通过鼠标放缩的OpenGL代码,使用C语言编写:
```c
#include <GL/glut.h>
GLfloat x1 = 50.0f;
GLfloat y1 = 50.0f;
GLfloat x2 = 100.0f;
GLfloat y2 = 100.0f;
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POLYGON);
glVertex2f(x1, y1);
glVertex2f(x2, y1);
glVertex2f(x2, y2);
glVertex2f(x1, y2);
glEnd();
glFlush();
}
void reshape(int w, int h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, (GLdouble)w, 0, (GLdouble)h);
}
void mouse(int button, int state, int x, int y) {
if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
x1 = x;
y1 = y;
}
else if(button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN) {
x2 = x;
y2 = y;
}
glutPostRedisplay();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("Mouse Scaling");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}
```
在这个程序中,我们定义了一个正方形,通过鼠标的左键和右键来放缩这个正方形。左键用于设置正方形的左下角坐标,右键用于设置正方形的右上角坐标。在 `display()` 函数中,我们使用了glBegin()和glEnd()函数来绘制一个红色的正方形。在 `reshape()` 函数中,我们使用了gluOrtho2D()函数来设置了正交投影的矩阵。在 `mouse()` 函数中,我们检测到鼠标事件,并将鼠标的坐标值设置为正方形的顶点坐标。最后,在 `main()` 函数中,我们设置了窗口的大小、位置和标题,并将 `display()`、`reshape()` 和 `mouse()` 函数分别绑定到对应的事件上。
阅读全文