Пробую OpenGL, ради интереса. Решил попробовать порисовать фигуры их перемещение, с изменением формы. Единственное, не понимаю, почему не происходит перерисовка, т.к. рисует либо вооще только начальную фигуру, либо вообще отрисует один шаг, хотя их 15... Нужен совет/помощь :)
Код вот такой:
| Код | const int width=800, height=800; //Задаем ширину и высоту окна
//Отрисовка многоугольника void DrawPolygon(float X[], float Y[], float dX[], float dY[]) { int k; glBegin(GL_LINE_LOOP); glColor3f(0.0f, 1.0f, 0.0f); for(k=0;k<5;k++) glVertex2f(X[k]+dX[k], Y[k]+dY[k]); // glVertex2f(X[1]+dX[1], Y[1]+dY[1]); // glVertex2f(X[2]+dX[2], Y[2]+dY[2]); // glVertex2f(X[3]+dX[3], Y[3]+dY[3]); // glVertex2f(X[4]+dX[4], Y[4]+dY[4]); glEnd(); }
void display() { static int i,j; static float deltaX[5],deltaY[5]; static float StartX[5]={-4.5, -4.5, -3.0, -3.0, -3.0}; static float StartY[5]={-0.5, 1.0, 1.0, 1.0, -0.5}; static float EndX[5]={ 2.9, 2.5, 3.7, 4.9, 4.5}; static float EndY[5]={-0.8, 0.6, 1.3, 0.6, -0.8};
//до границы for(i=0;i<15;i++) { glFlush(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); DrawPolygon(StartX,StartY,deltaX,deltaY); for(j=0;j<5;j++) { deltaX[j]=(EndX[5-j]-StartX[j])/15; deltaX[j]=(EndY[5-j]-StartY[j])/15; } }
}
int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(width,height); glutInitWindowPosition(0,0); glutCreateWindow("OpenGL Test"); glOrtho(-5.0, 5.0, -5.0, 5.0, -1, 1); glutDisplayFunc(display); glutMainLoop(); return 0; }
|
|