使用opengl语言写一个鼠标左键取点并存入一个二维数组的的函数,最后将取点次数返回,并使用到另一个函数中
时间: 2024-05-09 15:16:43 浏览: 61
下面是一个使用OpenGL语言编写的鼠标左键取点并存入二维数组的函数示例:
```c++
int pointCount = 0; // 记录取点次数
const int maxPoints = 100; // 最多取100个点
float points[maxPoints][2]; // 二维数组,记录取点坐标
void mouseCallback(int button, int state, int x, int y) {
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
points[pointCount][0] = x;
points[pointCount][1] = y;
pointCount++;
}
}
void drawPoints() {
glPointSize(5.0f);
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POINTS);
for (int i = 0; i < pointCount; i++) {
glVertex2f(points[i][0], points[i][1]);
}
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
drawPoints();
glutSwapBuffers();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutCreateWindow("Mouse Callback Demo");
glutDisplayFunc(display);
glutMouseFunc(mouseCallback);
glutMainLoop();
return 0;
}
```
该程序使用OpenGL库创建了一个窗口,并注册了一个鼠标回调函数`mouseCallback`。当用户单击鼠标左键时,该函数将记录鼠标坐标并将其存储在二维数组`points`中。同时,`pointCount`变量将增加1,以记录取点次数。在`drawPoints`函数中,我们遍历`points`数组并绘制每个点。最后,我们在`display`函数中调用`drawPoints`函数以在屏幕上绘制所有已记录的点。
你可以在另一个函数中调用`pointCount`变量来获取取点次数,并使用`points`数组中的数据来进行其他操作。
阅读全文