Мне нужно, чтобы вспыхнуть два объекта 2d на определенной частоте. Я использую для этого OpenGL (glut) и C++ в Visual C++ Express Edition. ОС - Windows XP Sp3, 32 бит.Как мигать (щелкнуть) 2-й объект с определенной частотой в opengl
Я думаю, что я успешно реализовал основное приложение, но не могу понять, как создавать флэш-объекты на определенной частоте. У вас есть предложения для меня? Код, который я сделал, это.
void display(void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0);
glVertex3f(140.0, 250.0+300.0, 0.0); //bottom left corner
glVertex3f(140.0+300.0, 250.0+300.0, 0.0); //bottom right corner
glVertex3f(140.0+300.0, 250.0, 0.0); //top right corner
glVertex3f(140.0, 250.0, 0.0);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0, 1.0, 1.0);
glVertex3f(640.0+200.0, 250.0+300.0, 0.0); //bottom left corner
glVertex3f(640.0+200.0+300.0, 250.0+300.0, 0.0); //bottom right corner
glVertex3f(640.0+200.0+300.0, 250.0, 0.0); //top right corner
glVertex3f(640.0+200.0, 250.0, 0.0);
glEnd();
glFlush();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowPosition(0,0);
glutInitWindowSize(1280,800);
glutGameModeString("1280x800:[email protected]");
glutEnterGameMode();
glutSetWindowTitle("OpenGL SSVEP stimulator");
glDisable(GL_DEPTH_TEST);
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0,1280,800,0.0,0.0,1.0);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Чтобы перепрограммировать я думал, что-то вроде этого (псевдо-код):
int leftFrequency=12;
int rightFrequency=20;
int i=0;
while(running) {
if(i%leftFrequency)
blackSquare;
}
else {
whiteSquare;
}
if(i%rightFrequency)
blackSquare;
}
else {
whiteSquare;
}
}
, но я не знаю, куда поместить этот код. Возможно, функция display()? Где я могу увеличить значение переменной i? Я попытался поместить все в функцию display(), но два квадрата не мигают. Переменная i увеличивается до 3. У меня нет типа ошибки.
Возможно, это неверно, мерцающая логика?
'whiteSquare,' Что это? –
Что-то вроде: нарисуйте белый квадрат. – lezan