Результаты поиска

4.1 Построение поверхностей

04 Авг 2008, zombie. Рубрика:

     Существует набор функций для построения сфер, цилиндров и дисков. Эти функции представляют очень мощный контроль за построением трехмерных объектов. Непосредственно рисовать вы будете, используя следующие функции: gluSphere, gluCylinder, gluDisk и gluPartialDisk. В начале книги вы научились строить трехмерные объекты с помощью функций из библиотеки Auxilary Library. Функции aux[Solid/Wire]Sphere, aux[Solid/Wire]Cylinder и aux[Solid/Wire]Cone просто вызывают gluSphere […]

3.8 Резюме

04 Авг 2008, zombie. Рубрика:

Ну вот, вы еще на один шаг продвинулись в изучении библиотеки OpenGL. Теперь вы имеете представление о том, как рисовать элементарные фигуры. Из примитивов вы можете составить фигуры любой сложности.

     Четырехугольники рисуются вызовом функции glBegin с параметром GL_QUADS или GL_QUAD_STRIP. Для первого случая каждые четыре вершины определяют свой четырехугольник. Во втором случае рисуются связанные четырехугольники. Первая, вторая, третья и четвертая вершина определяют первый четырехугольник. Третья, четвертая, пятая и шестая вершина - второй четырехугольник и т.д. (2n-1), 2n, (2n+1) и (2n+2) вершины задают n-ый четырехугольник. […]

3.4 Треугольники

04 Авг 2008, zombie. Рубрика:

     Для треугольника можно задавать те же параметры, что и для линии, плюс есть еще одна функция glPolygonMode. Она устанавливает опции для отрисовки многоугольника. Первый параметр может принимать значения - GL_FRONT, GL_BACK и GL_FRONT_AND_BACK. Второй параметр указывает, как будет рисоваться многоугольник. Он принимает значения: GL_POINT(рисуются только точки), GL_LINE(рисуем линии) и GL_FILL(рисуем заполненный многоугольник). Первый параметр […]

3.3 Линии

04 Авг 2008, zombie. Рубрика:

     Для линий вы также можете изменять ширину, цвет, размер, сглаживание. Если вы зададите разные цвета для начала и конца линии, то ее цвет будет переливающимся. OpenGL по умолчанию делает интерполяцию. Так же вы можете рисовать прерывистые линии, делается это путем наложения маски при помощи следующей функции: void glLineStipple(GLint factor, GLushort pattern );      Второй […]

3.2 Точки

04 Авг 2008, zombie. Рубрика:

     Вы можете нарисовать столько точек, сколько вам нужно. Вызывая glVertex3d, вы устанавливаете новую точку. При создании точек вы можете изменять следующие параметры. Вы можете вызывать glColor3d внутри glBegin/glEnd. Размер точки можно устанавливать с помощью функции: void glPointSize(GLfloat size) Режим сглаживания можно устанавливать вызовом функции glEnable(GL_POINT_SMOOTH)      Отключается, соответственно, вызовом glDisable() c этим параметром. Последние […]

3.1 Общие положения

04 Авг 2008, zombie. Рубрика:

     Точки, линии, треугольники,четырехугольники, многоугольники - простые объекты, из которых состоят любые сложные фигуры. В предыдущей главе мы рисовали сферу, конус и тор. OpenGL непосредственно не поддерживает функций для создания таких сложных объектов, т.е. таких функций нет в opengl32.dll. Эти функции есть в библиотеке утилит glu32.dll, и устроены они следующим образом. Для того чтобы нарисовать […]

2.10 Резюме

04 Авг 2008, zombie. Рубрика:
Комментарии к записи 2.10 Резюме отключены

На этом эта глава книги закончена. Вы научились рисовать трехмерные объекты и делать интерактивную анимацию, используя эти объекты. Этого, в общем-то, достаточно для написания примитивных программ. В следующей главе мы научимся рисовать примитивные объекты: точки, линиии, ломаные и многоугольники.

2.9 Упражнение:» Игра Арканоид»

04 Авг 2008, zombie. Рубрика:

Напишите игру "Arconoid" - летающий шарик, снизу подставка, пользователь стрелками или мышкой управляет подставкой и отбивает шарик. Исходный файл смотрите здесь. Исполняемый файл здесь.

2.8 Анимация

04 Авг 2008, zombie. Рубрика:

     Давайте оживим нашего снеговика и добавим интерактивность. Для этого надо отрисовывать кадры и реагировать на внешние события от клавиатуры или мыши. Для отрисовки кадров их надо как-то различать. Для этого мы в функции display вводим переменную time типа int с модификатором static. Создайте новый проект и в функцию display введите следующее: "static int time=0;". […]