Софт-Архив

Установка Opengl img-1

Установка Opengl

Рейтинг: 4.5/5.0 (1845 проголосовавших)

Описание

Загрузить драйверы OpenGL

Загрузки драйверов OpenGL

Доступные для загрузки с использованием DriverDoc:

На данной странице содержится информация об установке последних загрузок драйверов OpenGL с использованием средства обновления драйверов OpenGL .

Драйверы OpenGL представляют собой небольшие программы, которые позволяют оборудованию OpenGL взаимодействовать с программным обеспечением операционной системы. Постоянное обновление программного обеспечения OpenGL предотвращает сбои и максимально повышает производительность оборудования и системы. Использование устаревших или поврежденных драйверов OpenGL может привести к системным ошибкам, сбоям и отказу оборудования или компьютера. Болеет того, установка неправильных драйверов OpenGL может сделать эти проблемы серьезнее.

Совет: если вы не знаете, как обновлять драйверы устройств OpenGL вручную, мы рекомендуем загрузить служебную программу для драйверов OpenGL. Этот инструмент автоматически загрузит и обновит правильные версии драйверов OpenGL, оградив вас от установки неправильных драйверов OpenGL .

Об авторе: Jay Geater — независимая писательница, специализирующаяся в сфере технологий, и компьютерный фанат на протяжении всей жизни. У нее есть степень бакалавра в области информационных технологий, и она ранее работала системным администратором крупной транснациональной компании. Ее работы были опубликованы в ряде ведущих технологических изданий.

Другие статьи, обзоры программ, новости

Компьютерная графика

Каркас OpenGL приложения с использованием GLUT

Сложность работы с OpenGL. как и с любой достаточно продвинутой технологией, состоит в том, что до написания первой строчки кода, рисующей что-либо на экране, требуется создать необходимые объекты, установить формат пиксела, проинициализировать вспомогательные буферы и т.д. Т.е. сообщить OpenGL. что, где и как мы собираемся рисовать.

Во многих книгах первая глава, размером в несколько десятков страниц посвящена подробному разбору интеграции OpenGL в систему. Человеку, который хочет изучать графику, это обычно кажется невероятно скучным. Часто такое решение не является кроссплатформенным, в то время, как многие программы для научной визуализации создаются под Linux.

Решением в данной ситуации является использование библиотеки GLUT. Она берет на себя работу по созданию окна, инициализации OpenGL. обработки сообщений от мыши и клавиатуры. Более того, используя библиотеку GLUT. такие функции, как включение аппаратного сглаживания, делаются в несколько строк кода.

Прим. Существуют достаточно большие и сложные приложения, предназначенные для научной визуализации, созданные с использованием библиотеки GLUT. Так что эта библиотека используется не только в учебных целях, но и в ряде реальных продуктов, построенных на технологии OpenGL.

Установка GLUT

GLUT не идет по умолчанию в системе и в среде разработки. Вам потребуется найти и скачать последнюю версию по ссылке: GLUT Downloads. Скопируйте *. dll файлы в папку system. находящуюся в директории c Windows. Файлы *. lib положите в папку lib Visual C ++, файл glut. h в папку Include\gl.

Прим. Версию 3.6 можно скачать по ссылке: glutdlls36.zip

К примеру, файлы могут располагаться таким образом:

Глава 1: Установка

Глава 1. Установка

Для использования OpenTK требуется .Net 2.0 runtime (Windows) или последняя версия 1.2.x Mono release (Linux/Mac OS X/Windows). При использовании Mono, настоятельно рекомендуем обновиться до последней доступной версии - версии младше, чем 1.2.6, содержат серьезные ошибки, которые могут повлиять на стабильность OpenTK.

Если Вы планируете скомпилировать библиотеку OpenTK самостоятельно из исходных текстов, то для этого Вам понадобиться Nant (в дальнейшем эта зависимость будет удалена)

Последнее и, наверное, самое главное, не забудьте посетить страницу проекта и скачать последнюю версию OpenTK. OpenTK распространяется в виде zip/7z – архива. Установка заключается в извлечении содержимого архива на Ваш жесткий диск. На данный момент не возможно инсталлировать OpenTK в глобальный кеш сборок (GAC).

Для использования OpenTK, необходимо чтобы Ваш проект ссылался на OpenTK.dll. Также поместите файл OpenTK.dll.config в папку проектом для достижения совместимости «скомпилировал один раз – запустил везде».

Следующие страницы посвящены более детальным инструкциям.

OpenGL - Быстрый старт

OpenGL - Быстрый старт 2.1 Устанавливаем OpenGL

Начнем с самого главного, установим необходимое программное обеспечение. Я предполагаю, что Windows у Вас уже установлен и работает, в противном случае вы купили не ту книгу. Во-первых, установите MSVisualC++6.0 и jdk113 или выше, если вам интересно узнать о написание java-апплетов с использованием OpenGL. Впрочем java понадобится вам только в седьмой главе. Во-вторых, нам понадобится реализация библиотеки OpenGL. Она входит в поставку Windows95/NT - это библиотеки opengl32.dll & glu32.dll. Вы также можете взять библиотеки OpenGL от Silicon Graphics. Инструкция по установке там прилагается. Вам придется скопировать opengl.dll и glu.dll в windows\system и положить opengl.lib, glu.lib в подкаталог Lib, где установлено MSVisualC++. В-третьих, вам понадобятся четыре моих программы-шаблона, которые представляют собой начальный скелет, который мы потом будем наполнять функциональностью. Где взять OpenGL от Silicon Graphics, Magician, jdk и мои программы-шаблоны, смотри в приложение 'А'.

2.2 Давайте что-нибудь изобразим

Самым простым объектом, с помощью которого можно увидеть всю мощь OpenGL, является сфера. Давайте попытаемся ее изобразить. Для этого надо создать новый проект в VisualC++, выполните следующие действия:

  1. Запустите MSVisualC++6.0
  2. Щелкните меню File->New->Win32 Console Application.
  3. Выберете каталог и имя проекта, впишите - sphere, щелкните OK.

Я все свои проекты держу на диске D в каталоге Projects. Projects ветвится дальше на подкаталоги с базами данных, утилитами, графикой и Java-приложениями. В общем, старайтесь присваивать разумные имена и вести разумную структуру каталогов. Это очень серьезная проблема.

  • Выберете An Empty Project, щелкните Finish.
  • Cкопируйте в каталог вашего проекта мой шаблон glaux.c и переименуйте его в sphere.c
  • Присоедините его к проекту. Project->Add To Project->Files
  • Щелкните Build->Set Active Configuration и установите тип проекта sphere - Win32 Release
  • Далее, щелкайте Project->Settings->Link->Object/library modules и добавьте туда opengl32.lib, glu32.lib и glaux.lib
  • Вставьте в функцию display следующий код:
  • Теперь откомпилируйте и запустите Вашу программу.

    Меню Build->Execute Sphere.exe

  • Исходный файл смотрите здесь. Исполняемый файл здесь.

    Теперь поясню назначение тех двух функций, что вы вставили в пункте 9. Функция glColor3d устанавливает текущий цвет, которым будут рисоваться фигуры. Тут нужно пояснить, как устанавливается цвет и общую философию в названии функций OpenGL. Цвет устанавливается четырьмя параметрами: красный, синий, зеленый и прозрачность. Эти параметры варьируют в диапазоне от нуля до единицы. Четвертый параметр нам пока не нужен, поэтому мы вызвали glColor с тремя параметрами. В этом случае, значение четвертого параметра, прозрачности, по умолчанию считается равным единице, т.е. абсолютно непрозрачным, ноль - будет абсолютно прозрачным. Так как в языке Си нет перегрузки функций, то применяется следующий синтаксис вызова функций - FuncionName[n=число параметров][тип параметров]. Доступны следующие типы:

    • b - GLbyte байт
    • s - GLshort короткое целое
    • i - GLint целое
    • f - GLfloat дробное
    • d - GLdouble дробное с двойной точностью
    • ub - GLubyte беззнаковый байт
    • us - GLushort беззнаковое короткое целое
    • ui - GLuint беззнаковое целое
    • v - массив из n параметров указанного типа

    В нашем случае - glColor3d - означает, что в функцию передается три параметра типа GLdouble. Также можно было вызвать glColor3i, т.е. три параметра типа GLint. Если тип параметров короткое целое, целое, байт или длинное, то компонента цвета приводится к диапазону [0,1]. Приведение к этому диапазону осуществляется по следующим образом. В случае беззнакового типа наибольшее возможное значение приводится к единице, ноль к нулю. В случае знакового максимальное значение приводится к единице или к минус единице, а минус единица будет приведена к единице. Мудрено, сразу и не поймешь. На практике вы будете пользоваться одним из трех случаев, рассмотренных в качестве примера ниже. Например, для беззнакового байта приведение будет осуществлено по следующей формуле: значение_переменной_хранимой_в_байте/255, т.к. 255 максимальное число, хранимое в одном байте. Функция glColor3dv означает, что в качестве параметров передается массив из трех элементов типа GLdouble. Например:

    Функция auxSolidSphere - рисует сферу в начале координат и единичным радиусом. Освещение, создание ламп и установка положения камеры мы рассмотрим чуть позже, а пока давайте получше освоимся и почувствуем насколько здесь все просто. Первую программу под моим руководством вы уже написали. Теперь выполните самостоятельные упражнения.

    2.3 Упражнение: "Трехмерные фигуры"

    Замените функцию auxSolidSphere на функцию, из указанных ниже с соответствующими параметрами. Значения параметров устанавливайте порядка единицы - 0.5-1.7. Если вы укажете слишком маленький размер, фигуру будет плохо видно; если слишком большой, то она получится урезанной. Это связано с тем, что ее край, как бы вылезет из монитора.

    • auxSolidCube(width) // куб
    • auxSolidBox(width, height, depth) // коробка
    • auxSolidTorus(r,R) // тор
    • auxSolidCylinder(r,height) // цилиндр
    • auxSolidCone(r,height) // конус
    • auxSolidIcosahedron(width) // многогранники
    • auxSolidOctahedron(width)
    • auxSolidTetrahedron(width)
    • auxSolidDodecahedron(width)
    • auxSolidTeapot(width) // рисует чайник

    С помощью выше указанных функций вы можете рисовать сплошные фигуры. Если вам надо нарисовать проволочную, то вместо Solid пишите Wire.

    2.4 Переход к новым координатам

    Продолжим рисовать трехмерные фигуры. В предыдущем параграфе вы научились рисовать примитивные трехмерные объекты. Но проблема в том, что они рисуются только в начале координат, т.е. в точке (0,0,0). Для того чтобы изобразить сферу в точке ( x0 ,y0 ,z0 ), надо переместить начало координат в эту точку, т.е. надо перейти к новым координатам. Эта процедура довольно распространенная при программировании графики и анимации. Часто, бывает очень удобно, сместить координаты в новую точку и повернуть их на требуемый угол, и ваши расчеты резко упростятся. Конкретный пример мы рассмотрим ниже, когда научимся программировать анимацию. А пока вы узнаете, как переходить к новым координатам. Для перехода к новым координатам в OpenGL есть две функции:

    Первая функция сдвигает начало системы координат на ( D x, D y, D z ). Вторая - поворачивает на угол j против часовой стрелки вокруг вектора (x0,y0,z0). Теперь, стоит сказать еще о двух очень важных функциях:

    • glPushMatrix()
    • glPopMatrix()

    Они предназначены для сохранения и восстановления текущих координат. Я не стал здесь приводить пример на то, как неудобно переходить от одной системы координат к другой и помнить все ваши переходы. Гораздо удобнее с помощью glPushMatrix() сохранить текущие координаты, потом сдвигаться, вертеться, как вам угодно, а после, вызовом glPopMatrix вернуться к старым координатам. Итак, настало время поэкспериментировать. Создайте новый проект, повторив пункты из раздела 2.2. Только назовите его sphere2. Сначала мы рассмотрим сдвиг координат. Вставьте в функцию display следующий код:

    Теперь откомпилируйте и запустите вашу программу.

    Меню Build->Execute Sphere.exe

    Исходный файл смотрите здесь. Исполняемый файл здесь.

    В общем-то, из комментариев многое понятно. Обращаю ваше внимание только на два последних вызова auxSolidSphere. Перед вызовом glPopMatrix сфера рисуется в точке (2,0,0), а после, в точке (0,0,0).

    2.5 Упражнение: "Cписок трехмерных фигур"

    Используя список функций из предыдущего упражнения, нарисуйте эти фигуры в два столбца. Слева проволочные. Справа сплошные.

    Примечание: тут хочу заметить, что в версии glaux.lib от фирмы Microsoft имеется следующий баг: цилиндр и конус рисуются всегда либо проволочными, либо сплошными. Если вы первый цилиндр/конус в программе нарисовали проволочным, то далее все цилиндры/конусы будут проволочными. Соответственно, если первой была сплошная фигура, то далее все будут сплошные. Поэтому, не стоит паниковать. Это ошибка Microsoft. Могу также вас порадовать, что ниже я расскажу, как обойти эту проблему.

    Исходный файл смотрите здесь. Исполняемый файл здесь.

    2.6 Поворот координат

    Теперь рассмотрим вращение координат. Создайте новый проект с именем Rotate. Переименуйте glaux.c в rotate.c В функцию display вставьте следующий код:

    Как видите, конус повернулся в абсолютных координатах. Так что, для того, чтобы нарисовать фигуру не в начале координат, надо:

    1. сохранить текущие координаты
    2. сдвинуть(glTranslated), повернуть(glRotated)
    3. нарисовать то, что хотели
    4. вернуться к старым координатам

    Вызовы glPushMatrixglPopMatrix могут быть вложенными, т.е.

    Естественно число вызовов glPopMatrix должно соответствовать числу вызовов glPushMatrix, иначе у вас сцена улетит в неизвестном направление. Максимально допустимая глубина вложенности glPushMatrix/glPopMatrix определяется следующим образом:

    Спецификация на OpenGL гарантирует, что глубина стека не может быть меньше 32.

    2.7 Упражнение: "Снеговик"

    Используя функцию glRotate, нарисуйте снеговика. Три сферы, шапка - конус, нос - тоже конус, глаза - сфера, рот можно квадратным сделать - glBox.

    Исходный файл смотрите здесь. Исполняемый файл здесь.

    Примечание: Имеется еще один баг в glaux.lib от Microsoft. Кажется, последний из обнаруженных мной. Функция aux[Solid/Wire]Cylinder прежде, чем нарисовать цилиндр, сдвигает и поворачивает координаты. Так что, если вы уже сместили и повернули координаты, то цилиндр нарисуется совсем не там, где вы рассчитывали. Люди из Microsoft, конечно же, будут уверять, что это особенность, и предложат вам скачать очередной ServicePack.;-) А я ниже расскажу, как более правильно рисовать цилиндры и конусы. Если вам некогда ждать, то далее приведен исправленный код этих функций. Большинство из вас сейчас пропустят его и перейдут к следующему очень интересному разделу - "Анимация". И правильно сделаете. К исправлению ошибок вернетесь, когда немного освоитесь. Но я все же решил привести код по исправлению ошибок Microsoft именно здесь. Можете пересобрать glaux.lib, заменив соответствующий код в файле shapes.c. Где взять исходники, смотрите в приложение 'A'. По-моему, они есть в MSDN.

    2.8 Анимация

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

    Запустив приложение, вы увидите, что снеговик пополз вдоль оси Х. Вот так вы можете делать анимацию. Т.е. теперь координаты объектов вычисляются в зависимости от времени. Я привел простой пример. Вообще говоря, для программирования сложной графики вам понадобится вычислять координаты каждого отдельного объекта в зависимости от времени.

    Далее мы рассмотрим пример с более сложной анимацией. Здесь вращается тор и его ось вращения. Я приведу исходный текст с подробными комментариями. Пример программы "Гироскоп":

    Исходный файл смотрите здесь. Исполняемый файл здесь.

    Как вы, наверное, догадались, надо создать очередной проект, скопировать туда мой шаблон, добавить его в проект, указать библиотеки opengl32.lib glu32.lib glaux.lib в Project->Setting->Link->Settings->Link->Object/library modules. вставить этот код в функцию display. Еще вам нужно в начале функции display вставить строку static int time=0; и закомментировать строчку glEnable(GL_LIGHTING) в функции main.

    Запустив это приложение, вы увидите, как оно работает. Теперь закомментируйте соответствующие друг другу вызовы glPushMatrix и glPopMatrix и посмотрите на результат. Я бы рекомендовал такой способ для изучения и понимания работы программы: вы комментируете куски кода и смотрите, что получается.

    Для того, чтобы реагировать на клавиатуру или мышь, вы должны определить функцию, которая будет вызываться при поступление событий от клавиатуры или мыши. Для кнопки клавиатуры вы определяете функцию со следующим прототипом void CALLBACK FunctionName(void) и устанавливаете ее как обработчик определенной кнопки - auxKeyFunc(key_code, FunctionName); key_code смотри в glaux.h. Пример: auxKeyFunc(AUX_LEFT, FunctionName) Здесь вы устанавливаете FunctionName как функцию, которая будет вызываться при нажатии на клавиатуре клавиши "стрелка влево".

    Для мыши вы устанавливаете свою функцию обработки событий мыши вызовом функции auxMouseFunc(int button,int action,AUXMOUSEPROC). Переменная button может принимать значения - AUX_LEFTBUTTON, AUX_MIDDLEBUTTON, AUX_RIGHTBUTTON. Переменная action принимает следующие значения - AUX_MOUSEDOWN, AUX_MOUSEUP, AUX_MOUSELOC. Функция AUXMOUSEPROC должна иметь прототип - void CALLBACK FunctionName(AUX_EVENTREC *event), где AUX_EVENTREC определено как

    Для более детальной информации смотрите справочные руководства и исходные тексты библиотеки OpenGL Auxiliary library. Эта книга об OpenGL, а не о программировании интерфейсов пользователя. Поэтому, за подобной информацией вам придется лезть в соответствующие справочные руководства по Win API, MFC, Java и т.п.

    В FunctionName вы можете изменить какую-нибудь глобальную переменную, и, соответственно, функция display будет рисовать кадры в зависимости от этой переменной.

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

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

    Исходный файл смотрите здесь. Исполняемый файл здесь.

    Проблемы с OpenGL в Windows 7 и Windows 8

    Проблемы с OpenGL в Windows 7 и Windows 8

    Полагаю, на эту страницу вас привело сообщение об ошибке при запуске OGS Mahjong. Здесь мы попробуем объяснить ее причины и перечислить известные нам пути решения проблемы.

    Суть проблемы

    Ошибка связана с невозможностью инициализации режима OpenGL. Это происходит потому что ваша видеокарта или (что значительно более вероятно) ее драйвера OpenGL не поддерживают. Чаще всего эта проблема возникает в системах Windows 7 и Windows 8 при использовании встроенных драйверов для видеокарт прошлого поколения (видеокарт поколения DX9 для Windows 7 и видеокарт поколения DX10 для Windows 8). Драйвера от Microsoft не поддерживают OpenGL и запустить игру с их использованием не получится. Это, также, относится к большинству других игр и программ, использующих для вывода графики OpenGL (например, с аналогичными проблемами сталкиваются любители 2й и 3й частей игры Quake).

    Пути решения Легкий путь (к сожалению не всегда возможный): установка драйверов от производителя видеокарты.
      Если вы используете видеокарту серии NVidia GeForce 6 или более позднюю, скачайте и установите драйвера для своей видеокарты с официального сайта NVidia. Это должно решить все проблемы. Для видеокарт серии NVidia GeForce 5 или более старых все сложнее. Официальных драйверов для Windows 7 и Windows 8 под эти видеокарты не существует. Вы можете поставить драйвера для Windows Vista, однако достоверной информации относительно их работоспособности нет. В случае использования Windows 8 решений не известно. Для видеокарт ATI Radeon HD 2000 или более поздних также можно установить официальный драйвер, скачав его с официального сайта AMD . С видеокартами ATI Radeon X и более ранними аналогичная проблема. Если вы используете Windows 7, вы можете попробовать установить Legacy-драйвер от Windows Vista: для 32-битной системы. для 64-битной системы. Для установки драйверов используйте менеджер устройств, так как просто инсталляция Catalist не приведет к смене драйвера вашей видеокарты. В Windows 8 вы не сможете этого сделать. В случае использования других видеокарт мы никогда не сталкивались с описанной проблемой. Если вы столкнулись, также попробуйте установить драйвера от производителя видеокарты.
    Путь обновления: приобретение более новой видеокарты.

    Если вы не смогли найти работающие драйвера от производителя вашей видеокарты, значит скорее всего она достаточно стара. Производителей в общем-то можно понять, они хотят продавать новые платы, а не поддерживать годами уже проданные. Хотя это как-то не по-человечески.

    Если вы решаете данную проблему заменой видеокарты, то в принципе, вам подойдет практически любая плата из тех что сейчас можно найти в магазинах. Если ваша материнская плата не оборудована разъемом PCI-E, вы можете найти видеокарты NVidia GeForce 6600 (или более позднюю, например 9800) или видеокарту ATI Radeon HD 3670 (или более позднюю 4670) для разъема AGP. Однако в этом случае обычные магазины вам скорее всего не помогут, придется искать по форумам, знакомым и магазинам с б/у запчастями.

    Путь консерватора: откат операционной системы.

    Вы можете вернуться к использованию операционной системы Windows Vista (с последними обновлениями она почти не уступает Windows 7) или Windows XP. Или установить ее как вторую систему на компьютере. В этом случае вы также сможете нормально запускать программы, использующие OpenGL. Включая OGS Mahjong.

    Путь самурая: использование Live-флэшки с Linux.

    В отличие от Windows, операционная система Linux отлично знакома с OpenGL, а современные дистрибутивы (например Ubuntu) способны распознать и установить корректные драйвера для видеокарты даже при запуске системы без установки на жесткий диск компьютера. Этот вариант позволит вам насладиться версией OGS Mahjong для Linux, используя всю производительность вашей системы и не занимаясь поисками работоспособных драйверов для “устаревшей” по мнению производителей и компании Microsoft видеокарты. В ближайшем будущем мы постараемся подготовить для вас удобное решение на базе этого варианта.

    Путь Ходжи Насредина: ждать.

    Мы ищем другие варианты и возможно в будущем найдем какое-нибудь решение. Или не найдем. Или устаревшее железо окончательно уйдет в историю…

    Как установить OpenGL в CodeBlocks

    Как установить OpenGL в CodeBlocks

    Автор zGothic 28 Май 2014 Рубрика C++

    Это моя первая статья по тематике программирования и в ней я хотел бы рассказать об успешном способе установки OpenGL на Windows для CodeBlocks. Если вы начинаете программировать на C++ используя графическую оболочку OpenGL, то отличный способ начать делать это с помощью библиотеки GLUT .

    Для установки GLUT нам потребуется:

    OS Windows – статья адаптирована для Windows 7 (в Windows XP и Vista тоже должно заработать).

    OpenGL – входит в программное обеспечение Windows

    GLUT – чтобы скачать библиотеку нажмите здесь: glut.zip

    IDE – больше всего мне нравится CodeBlocks, его и будем использовать (но вы можете использовать и Visual Studio. если желаете)

    C++ компилятор – я буду использовать компилятор MinGW. Его можно установить как отдельно, так и вместе с CodeBlocks.

    Как установить OpenGL Шаг 1 — Скачиваем CodeBlocks

    Скачайте CodeBlocks с MinGW. Выбирать нужно бинарный инсталлятор (файл *.exe) с MinGW (если он у вас не установлен). На данный момент свежий пакет установки называется так «codeblocks-13.12mingw-setup.exe». Найти его можно на странице Home -> Downloads -> Download the binary release .

    Шаг 2 — Устанавливаем CodeBlocks

    Установите CodeBlocks и MinGW запустив файл *.exe. Установите все параметры по умолчанию. При возникновении ошибки в CodeBlocks « The compiler’s setup (GNU GCC Compiler) is invalid, so Code::Blocks cannot find/run the compiler» зайдите в Settings — > Compiler -> Toolchain executables и нажмите Auto-detect. далее 2 раза OK .

    Шаг 3 — Opengl установка

    Распаковываем скачанный glut.zip  и выполняем следующие действия:

    Скопируйте glut.dll в папку “C:\Windows\System32” (Если вы используете 64-разрядную версию Windows 7, то вам необходимо скопировать этот файл в папку “C:\Windows\SysWOW64”).

    Скопируйте glut.h в папку «include\GL» вашего компилятора MinGW. Если вы установили CodeBlocks вместе с MinGW в каталог по умолчанию, то это будет папка «C:\Program Files\CodeBlocks\MinGW\include\GL» (у меня это “C:\MinGW\include\GL ”)

    Скопируйте libglut32.a в ту же папку с компилятором “MinGW\lib”.

    Шаг 4 — Как подключить OpenGL в CodeBlocks

    Теперь у вас есть все необходимое программное обеспечение. Теперь вы можете создать новый OpenGL и Glut проект. CodeBlocks имеет возможность при создании нового проекта создание проекта GLUT, но мы не будем использовать это сейчас.

    Запускаем CodeBlocks и выбираем File -> New -> Project. в новом окне выберите Empty project  и нажмите кнопку GO .

    Пропускаем приветствие и жмем Next. на следующей странице вводим название проект в первой строчке и задаем путь для его сохранения во второй строке.

    На заключительной странице убедитесь, что в выпадающем списке выбран GNU GCC Compilier.

    Нажмите Finish .

    После того как ваш проект создан, щелкните правой кнопкой мыши по названию проекта в окне Management и выберите “Build options… ”. В левой части окна должно быть выбрано название проекта (не выбирайте Debug или Release). Далее выбираем вкладку Linker settings .

    В этой вкладке нажмите Add и в появившемся окне Add library в поле File введите без кавычек «opengl32».

    Сделайте тоже самое на этот раз вводя «glu32» и «glut32».

    Скачайте данный GLUT OpenGL пример и распакуйте его — main.zip. С помощью Блокнота откройте его и скопируйте содержимое.

    В CodeBlocks создайте новый файл, выбрав File -> New -> Empty File и введя название «main.cpp».

    Подтвердите добавление файла к проекту.

    Графическая библиотека OpenGL

    методическое пособие

    OpenGL является одним из самых популярных прикладных программных интерфейсов (API – Application Programming Interface) для разработки приложений в области двумерной и трехмерной графики.

    Стандарт OpenGL (Open Graphics Library – открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc.

    Библиотека насчитывает около 120 различных команд, которые программист использует для задания объектов и операций, необходимых для написания интерактивных графических приложений.

    На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ. Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свободно распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux.

    Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:

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

    Наличие хорошего базового пакета для работы с трехмерными приложениями упрощает понимание студентами ключевых тем курса компьютерной графики – моделирование трехмерных объектов, закрашивание, текстурирование, анимацию и т.д. Широкие функциональные возможности OpenGL служат хорошим фундаментом для изложения теоретических и практических аспектов предмета.

    Основы OpenGL Основные возможности

    Описывать возможности OpenGL мы будем через функции его библиотеки. Все функции можно разделить на пять категорий:

    • Функции описания примитивов определяют объекты нижнего уровня иерархии (примитивы), которые способна отображать графическая подсистема. В OpenGL в качестве примитивов выступают точки, линии, многоугольники и т.д.
    • Функции описания источников света служат для описания положения и параметров источников света, расположенных в трехмерной сцене.
    • Функции задания атрибуто в. С помощью задания атрибутов программист определяет, как будут выглядеть на экране отображаемые объекты. Другими словами, если с помощью примитивов определяется, что появится на экране, то атрибуты определяют способ вывода на экран. В качестве атрибутов OpenGL позволяет задавать цвет, характеристики материала, текстуры, параметры освещения.
    • Функции визуализации позволяет задать положение наблюдателя в виртуальном пространстве, параметры объектива камеры. Зная эти параметры, система сможет не только правильно построить изображение, но и отсечь объекты, оказавшиеся вне поля зрения.
    • Набор функций геометрических преобразований позволяют программисту выполнять различные преобразования объектов – поворот, перенос, масштабирование.

    При этом OpenGL может выполнять дополнительные операции, такие как использование сплайнов для построения линий и поверхностей, удаление невидимых фрагментов изображений, работа с изображениями на уровне пикселей и т.д.

    Интерфейс OpenGL

    OpenGL состоит из набора библиотек. Все базовые функции хранятся в основной библиотеке, для обозначения которой в дальнейшем мы будем использовать аббревиатуру GL. Помимо основной, OpenGL включает в себя несколько дополнительных библиотек.

    Первая из них – библиотека утилит GL (GLU – GL Utility ). Все функции этой библиотеки определены через базовые функции GL. В состав GLU вошла реализация более сложных функций, таких как набор популярных геометрических примитивов (куб, шар, цилиндр, диск), функции построения сплайнов, реализация дополнительных операций над матрицами и т.п.

    OpenGL не включает в себя никаких специальных команд для работы с окнами или ввода информации от пользователя. Поэтому были созданы специальные переносимые библиотеки для обеспечения часто используемых функций взаимодействия с пользователем и для отображения информации с помощью оконной подсистемы. Наиболее популярной является библиотека GLUT (GL Utility Toolkit). Формально GLUT не входит в OpenGL, но de facto включается почти во все его дистрибутивы и имеет реализации для различных платформ. GLUT предоставляет только минимально необходимый набор функций для создания OpenGL-приложения. Функционально аналогичная библиотека GLX менее популярна. В дальнейшем в этом пособии в качестве основной будет рассматриваться GLUT.

    Рис. 1 Организация библиотеки OpenGL

    Кроме того, функции, специфичные для конкретной оконной подсистемы, обычно входят в ее прикладной программный интерфейс. Так, функции, поддерживающие выполнение OpenGL, есть в составе Win32 API и X Window. На рисунке схематически представлена организация системы библиотек в версии, работающей под управлением системы Windows. Аналогичная организация используется и в других версиях OpenGL.

    Архитектура OpenGL

    Функции OpenGL реализованы в модели клиент-сервер. Приложение выступает в роли клиента – оно вырабатывает команды, а сервер OpenGL интерпретирует и выполняет их. Сам сервер может находиться как на том же компьютере, на котором находится клиент (например, в виде динамически загружаемой библиотеки – DLL), так и на другом (при этом может быть использован специальный протокол передачи данных между машинами).

    GL обрабатывает и рисует в буфере кадра графические примитивы с учетом некоторого числа выбранных режимов. Каждый примитив – это точка, отрезок, многоугольник и т.д. Каждый режим может быть изменен независимо от других. Определение примитивов, выбор режимов и другие операции описываются с помощью команд в форме вызовов функций прикладной библиотеки.

    Примитивы определяются набором из одной или более вершин (vertex). Вершина определяет точку, конец отрезка или угол многоугольника. С каждой вершиной ассоциируются некоторые данные (координаты, цвет, нормаль, текстурные координаты и т.д.), называемые атрибутами. В подавляющем большинстве случаев каждая вершина обрабатывается независимо от других.

    С точки зрения архитектуры графическая система OpenGL является конвейером, состоящим из нескольких последовательных этапов обработки графических данных.

    Команды OpenGL всегда обрабатываются в том порядке, в котором они поступают, хотя могут происходить задержки перед тем, как проявится эффект от их выполнения. В большинстве случаев OpenGL предоставляет непосредственный интерфейс, т.е. определение объекта вызывает его визуализацию в буфере кадра.

    С точки зрения разработчиков, OpenGL – это набор команд, которые управляют использованием графической аппаратуры. Если аппаратура состоит только из адресуемого буфера кадра, тогда OpenGL должен быть реализован полностью с использованием ресурсов центрального процессора. Обычно графическая аппаратура предоставляет различные уровни ускорения: от аппаратной реализации вывода линий и многоугольников до изощренных графических процессоров с поддержкой различных операций над геометрическими данными.

    Рис. 2. Функционирование конвейера OpenGL

    OpenGL является прослойкой между аппаратурой и пользовательским уровнем, что позволяет предоставлять единый интерфейс на разных платформах, используя возможности аппаратной поддержки.

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

    Синтаксис команд

    Определения команд GL находятся в файле gl.h, для включения которого нужно написать

    Для работы с библиотекой GLU нужно аналогично включить файл glu.h. Версии этих библиотек, как правило, включаются в дистрибутивы систем программирования, например Microsoft Visual C++ или Borland C++ 5.02.

    В отличие от стандартных библиотек, пакет GLUT нужно инсталлировать и подключать отдельно. Подробная информация о настройке сред программирования для работы с OpenGL дана в Приложении С.

    Все команды (процедуры и функции) библиотеки GL начинаются с префикса gl, все константы – с префикса GL_. Соответствующие команды и константы библиотек GLU и GLUT аналогично имеют префиксы glu (GLU_) и glut (GLUT_)

    Кроме того, в имена команд входят суффиксы, несущие информацию о числе и типе передаваемых параметров. В OpenGL полное имя команды имеет вид:

    Подробнее об OpenGL

    Подробнее об OpenGL Что такое OpenGL?

    Это програмный интерфейс для программирования графики, "Открытая Графическая Библиотека".

    Зачем нужна OpenGL?

    С помощью OpenGL создаются различные графические двумерные и трехмерные программы и игры, такие, как Quake и т. п. стрелялки-автогонки-бродилки.

    Если у вас уже установлена и нормально работает какая-нибудь подобная игра, значит все программы, распространяемые с www.rossprogrammproduct.com тоже будут нормально работать на вашем компьютере.

    Как узнать, какая версия OpenGL установлена на вашем компьютере?

    Проще всего так: запустите любую программу от РОССПРОГРАММПРОДУКТ. в меню Помощь выберите команду О программе и прочитайте до конца текст в появившемся окне сообщений.

    Для нормальной работы программ распространяемых с www.rossprogrammproduct.com необходима версия OpenGL 1.4.0 и выше.

    Что делать, если у вас устаревшая версия OpenGL ?

    К сожалению, при обычной установке Windows устанавливается самая старая версия OpenGL 1.1 .

    Но при правильной установке драйверов видеоадаптера на компьютер одновременно устанавливается самая современная (на момент изготовления видеокарты) версия OpenGL .

    Например, на компакт-диске с драйверами для видеокарты корпорации NVIDIA имеется файл nvopengl.dll - это именно то, что надо. Этот файл должен находиться в директории C:\WINDOWS\SYSTEM

    Таким образом, если у вас боле-мене современная видеокарта, то все программы от РОССПРОГРАММПРОДУКТ будут нормально работать на вашем компьютере.

    Более того, Кубик Рубика будет работать и на компьютерах с самыми старыми видеокартами и OpenGL 1.1. но при этом качество анимации будет оставлять желать лучшего.

    Что касается Пазлов, то эта игра более требовательна к ресурсам: желательно иметь видеокарту не хуже GeForce2 MX и OpenGL 1.4.0. С видеокартами более ранних выпусков программа будет работать плохо, и даже, возможно, вообще не будет работать.

    Наконец, вы легко можете достать самую современную версию OpenGL. посетив сайт www.opengl.org .

    Ещё лучше будет взять последнюю версию OpenGL на сайте www.nvidia.com. если у вас видеокарта от корпорации NVIDIA или на сайте www.ati.com. если у вас видеокарта от корпорации ATI .

    Всё необходимое програмное обеспечение распространяется бесплатно.

    Однако, если у вас очень старая и маломощная видеокарта, то выход один: апгрейд, т.е. установка новой видеокарты с последующим обновлением драйверов.

    Copyright © 2007 г. РОССПРОГРАММПРОДУКТ ®.