opengl隔一段时间画一个点
时间: 2023-09-06 16:10:08 浏览: 80
下面是使用OpenGL定时器每隔一段时间绘制一个点的示例代码:
```c++
#include <GL/glut.h>
#include <stdlib.h>
// 定时器回调函数
void timer(int value)
{
// 绘制一个随机颜色的点
glColor3f((float)rand()/RAND_MAX, (float)rand()/RAND_MAX, (float)rand()/RAND_MAX);
glBegin(GL_POINTS);
glVertex2f((float)rand()/RAND_MAX*2-1, (float)rand()/RAND_MAX*2-1);
glEnd();
// 重新注册定时器
glutTimerFunc(1000, timer, 0);
// 刷新窗口
glutPostRedisplay();
}
// 绘制函数
void display()
{
// 清空颜色缓冲区
glClear(GL_COLOR_BUFFER_BIT);
// 交换前后缓冲区
glutSwapBuffers();
}
// 初始化函数
void init()
{
// 设置清屏颜色为黑色
glClearColor(0, 0, 0, 0);
// 注册定时器
glutTimerFunc(1000, timer, 0);
}
int main(int argc, char** argv)
{
// 初始化GLUT库
glutInit(&argc, argv);
// 设置窗口大小和位置
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
// 创建窗口并设置标题
glutCreateWindow("OpenGL Timer Demo");
// 初始化OpenGL
init();
// 注册绘制函数
glutDisplayFunc(display);
// 进入事件循环
glutMainLoop();
return 0;
}
```
上述代码使用`glutTimerFunc`函数注册一个每隔1秒钟触发一次的定时器,在定时器回调函数中绘制一个随机颜色的点,并重新注册定时器。在主函数中,使用`glutDisplayFunc`函数注册一个绘制函数,以便在窗口需要重绘时调用。最后进入事件循环,使程序一直运行下去,直到用户关闭窗口。
阅读全文