Имеется программа которая обрисовывает 500 точек в случайных местах.
Проблема в том, что изображение обновляется только в моменты нажатия на него мышью и в промежутки в 1(или чуть меньше) секунду.
Как сделать так, что-бы изображение изменялось само и без задержки?
Вот она:
#include <iostream>
#include <conio.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctime>
using namespace std;
void init();
void displayFunction();
void init()
{
glutDisplayFunc(displayFunction);
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-300, 300, -300, 300);
}
void displayFunction()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0, 0, 0);
glPointSize(3.0);
glBegin(GL_POINTS);
srand((unsigned)time(NULL));
//генерация точек и их отрисовка
for (unsigned int i = 0; i < 500; ++i)
{
bool sign = bool(rand() % 2);
int x = 0 + rand() % 301;
int y = 0 + rand() % 301;
if (!sign)
x = -x;
sign = bool(rand() % 2);
if (!sign)
y = -y;
glVertex2i(x, y);
}
glEnd();
glutSwapBuffers();
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(600, 600);
glutInitWindowPosition((GetSystemMetrics(SM_CXSCREEN) - 600) / 2, (GetSystemMetrics(SM_CYSCREEN) - 600) / 2);
glutCreateWindow("Window");
init();
glutMainLoop();
return 0;
}
Кстати, скажите, нужен ли тут glFlush()?