Страница 4 |
Введение в OpenGl. Учебник |
|||||
Главная Страница 1 Страница 2 Страница 3 Страница 4 Страница 5 Страница 6 Страница 7 Страница 8 Страница 9 Страница 10 Страница 11 Страница 12 Страница 13 Страница 14 Страница 15 Страница 16 Страница 17 Страница 18 Страница 19 Страница 20 Страница 21 Скачать учебник |
||||||
---|---|---|---|---|---|---|
() и glEnd(), определяют объект, который следует нарисовать – в данном случае полигон с 4 вершинами. «Углы» полигона определяются командами glVertex3f(). Как можно догадаться по значениям аргументов, которые являются координатами (x, y, z), полигон представляет собой квадрат в плоскости z=0. Наконец, вызов glFlush() позволяет быть уверенным в том, что команды OpenGL действительно выполнились, а не были сохранены в буфере в ожидании дальнейших команд. ОбновитьОкно() – это опять-таки метка для функций, зависящих от оконной системы. На самом деле этот фрагмент кода не слишком хорошо структурирован. Могут возникнуть вопросы: «Что если мы попытаемся изменить размер окна или переместить его?» «Необходимо ли устанавливать координатную систему каждый раз при отрисовке квадрата?» Позже ИнициализироватьОкно() и ОбновитьОкно() будут заменены на реально работающие вызовы, которые, однако, требуют реструктуризации кода, что сделает его более эффективным. 1.3 Синтаксис команд OpenGLКак можно было заметить из простой программы, приведенной в предыдущем разделе, в названии команд OpenGL используется префикс gl и заглавные буквы для отделения слов, составляющих название команды (вспомним, например, glClearColor()). Подобным же образом OpenGL определяет константы, начинающиеся с GL_ со всеми заглавными буквами и символом подчеркивания для отделения слов (например, GL_COLOR_BUFFER_BIT). Кроме того, можно было обратить внимание на казалось бы лишние буквы и цифры в названии некоторых команд (например, 3f в glColor3f() и glVertex3f()). Действительно, слова Color (цвет) в названии glColor3f() достаточно, чтобы определить команду меняющую текущий цвет. Однако в библиотеке определено несколько версий такой команды, принимающих данные в различных форматах. Более конкретно, 3 в названии команды glColor3f() означает, что она получает три аргумента, существует и другая версия, получающая четыре аргумента. Буква f означает, что аргументы имеют формат числа с плавающей точкой. Подобное соглашение об именовании команд позволяет программисту использовать желаемый, более удобный для него формат аргументов. Некоторые команды воспринимают до восьми различных типов данных. Буквы, используемые в качестве суффиксов для указания конкретного типа данных в реализации OpenGL для ISO - стандарта языка C приведены в таблице 1-1. Отдельные реализации OpenGL (например, для языка C++ или Ada) могут не следовать описанной схеме точно. Таблица 1-1. Суффиксы команд и соответствующие им типы аргументов
|