Здравствуйте, Respect!
Для этой задачи совсем не обязательно юзать OpenGl или DirectX.
Подробно расписать как это сделать сейчас не смогу, так как нету установленого на машине C++, но идею подать - легко.
Проще всего - с помощью синусоиды, положение которой зависит от времени прошедшего со старта программы (косинус ни чем не хуже
).
Напушу только часть кода, и то примерно.
Итак, постоянно (в цикле while(true){...}) выполняем приведённый код. цикл по n - рисуем по одной строке пикселов для каждой полосы флага. Цикл по j - двигаемся по строке пикселов
Тут чистая математика. Надеюсь, у вас с ней всё хорошо.
Приложение:
//Bmp - что-нибудь для отображения графики на экране//Bmp[i][j] - пиксель i-й строки с номером jwhile(true){time=...//время после запуска программы в секундахfor(int n=0; n<Height; n++) //Height - высота одной полосы флага{for(int j=Start; j<End; j++) //Start - столбец, с которого начинаем рисовать (вполне прокатит 0), End - столбец до которого рисуем (ну 100 например){ i=sin((float)j/30.0f+Time); Bmp[i][j]=UpColor; Bmp[i+Height][j]=MiddleColor; Bmp[i+2*Height][j]=BottomColor;//UpColor - цвет верхней полосы флага, Middle... и Bottom... - средней и нижней. Дико извиняюсь но цветов флага России не помню. Знаю только родные украинские :)}}}