Шаг 7 - Полетаем

Вводим переменные:

#include "afxwin.h"
#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glaux.h"

int x; 
int y;
//......

Изменяем реакцию на нажатие клавиш:

void CALLBACK ProcUp (void)
{
	y=y-20;
	display();
}

void CALLBACK ProcDown (void)
{
	y=y+20;
	display();
}

void CALLBACK RrocLeft(void)
{
	x=x-20;
	display();
}

void CALLBACK ProcRight(void)
{
	x=x+20;
	display();
}

Изменение display:

void CALLBACK display (void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	//......
	gluLookAt(x, y, 300, 150, 150, 0, 0, 1, 0);
	//......
}

Начальные установки:

int main(int argc, char** argv)
{
	x=350;
	y=350;
	//......
}

Описание

Скомпилируйте и запустите. Нажмайте клавиши и вы полетите !!! Да будет не очень плавно. Изображение будет пропадать частично. Но вы полетите.

Конечно существуют буферы , и настройки которые улучшают изображение. Поэтому поводу и по поводу всех моих шагов я перескажу притчу из Нового Завета.

Посеял хозяин пшеницу. Прошло время и он послал слуг посмотреть как дела. Пришли слуги и говорят, там вместе с пшеницей плевела. Что нам делать? Вырывать плевела? Остановитесь неразумные. Вместе с плевелами вы вырвете пшеницу. Дождитесь осени, соберите всё что выросло, отделите плевела от пшеницы. Сожгите плевела, а пшеницу поместите в амбар.

Итак, давайте отвлечемся от недостатков и сконцентрируемся на реультате.

Как видете функцию display можно вызывать в любом месте. Этим мы и воспользовались. Поменяли параметры gluLookAt (y, x, .... на переменные. Которые изменяем при нажатии и вызываем перерисовку. Еще я добавил функцию glClear для очистки экрана. Закомментируйте её и вы получите интересный результат.

Шпаргалка

Очишайте экран:

glClear(GL_COLOR_BUFFER_BIT);

Для перерисовки вызываете функцию display:

void CALLBACK  RrocLeft(void)
{
	//......
	display();
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.