logo search
Posobie_Cpp

Void main()

{

if( !xglInitWindow(0, 0, 300, 300, "Test XGL") ) // создаем окно вывода графики

{

auxQuit(); // выход в случаи неудачи

}

glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // цвет заливки окна

xglMainLoop(Draw); // запускаем цикл обработки сообщений

}

Выше приведенная программа cоздает окно для вывода графики, заливает его черным цветом и рисует на нем белый квадрат.

Для работы с графикой используется функция Draw. Функция Draw объявлена как CALLBACK (возвращаемая). Это специальный тип функций, который используется для вывода изображений в окно Windows. Данная функция вызывается всякий раз, когда необходимо перерисовать данные в области окна. В этой функции мы определяем что и как должно рисоваться. Причем в внутри функции не рекомендуется использовать какие-либо сложные и длительные вычисления, так как это будет сказываться на скорости рисования ( эта функция может вызываться достаточно часто). Если нужно провести какие-то трудоемкие вычисления то их следует произвести заранее, например, в функции main(). Если необходимо передавать какие либо данные в функцию Draw, то это можно делать через глобальные переменные.

После этого описываем функцию void main(). В этой функции создается окно для вывода графики, задается цвет заливки и запускается цикл обработки сообщений для окна.

Функция bool xglInitWindow(int x, int y, int sx, int sy, char* name) создает окно для вывода графики, принимает следующие параметры:

Функция void auxQuit() параметров не имеет и производит выход из программы. Вызывается в случаи если неудалось создать окно.

Функция void glClearColor(float red, float green, float blue, float alpha) задает цвет заливки окна, принимает следующие параметры:

Функция bool xglMainLoop(AUXMAINPROC pfDraw) запускает цикл обработки сообщений. В качестве параметра передается имя функции, которая будет вызываться при перерисовке окна:

Для рисования можно использовать следующие функции, вызываемые внутри функции Draw() :

Следует учитывать, что начало системы отсчета находится в левом нижнем углу окна.