Лекция 1 OpenGL («Open Graphics Library») - программный интерфейс (API) к графической плате. Утвержден в 1992 году Основой стандарта стала библиотека IRIS.

Презентация:



Advertisements
Похожие презентации
Астана ( )Компьютерная графика (лекция 6) ВВЕДЕНИЕ В OPENGL Лекция 6.
Advertisements

OpenGL Лекция 4 ( ). void glVertexPointer( GLint size, GLenum type, GLsizei stride, void *ptr ) size определяет число координат вершины (2, 3,
Лекция 1 ( ). Основные возможности OpenGL Набор базовых примитивов: точки, линии, многоугольники и т.п. Видовые и координатные преобразования.
OpenGL. Графический конвейер. Геометрические преобразования.
OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8.
OpenGL Лекция 2.. Преобразование координат Преобразования координат.
OpenGL Лекция 3. Построение тени Проективные тени Объемные тени Карты теней Мягкие тени.
Компьютерная визуализация Лекция 3 СПбГУ ИТМО 2004.
Компьютерная графика. Лекция 4 Алгоритмы формирования изображений. Основы OpenGL.
Графический конвейер Преобразования геометрии Александр Шубин.
Освещение и текстурирование в OpenGL Астана 2004 Лекция 10.
Машинная графика. Введение. Что такое машинная графика? Планы на семестр и проставление баллов Виды машинной графики Основные компоненты сцены Инструкция.
OpenGL API Алексей Игнатенко (MSU Graphics & Media Lab) Алексей Игнатенко (MSU Graphics & Media Lab)
GPU vs. CPU 681 млн. транзисторов Тактовая частота 575Mhz * 768MB 1.8 Ghz памяти DDR4 ~650 млн. транзисторов Тактовая частота ~700Mhz 1GB 1.1 Ghz памяти.
OpenGL Графические библиотеки 2D –GAPI –GDI –XWindow –GTK –QT 3D –DirectX –OpenGL.
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
Intro Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 1 Введение в компьютерную графику URL:
Оптимизация графического движка на библиотеке OpenGL.
Компьютерная графика Александр Бобков Семинар 2 Преобразование вершин.
{ OpenGL Лекция 3 ( ). float ambient[4] = {0.0, 0.0, 0.0, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); // RGBA интенсивность всей сцены.
Транксрипт:

Лекция 1

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

Mark Segal, Kurt Akeley. The OpenGL Graphics System: A Specification Ю.М. Баяковский, А.В. Игнатенко, А.И. Фролов. ГРАФИЧЕСКАЯ БИБЛИОТЕКА OpenGL OpenGL Programming Guide (Addison- Wesley Publishing Company) («Red Book») Э. Эйнджел. Интерактивная компьютерная графика

Вывод цветных изображений высокого качества, составленных из геометрических примитивов Расчет освещения от нескольких источников света Текстурирование Удаление невидимых поверхностей Анимация, трехмерные преобразования

Создание окон Работа с устройствами ввода (мышь, клавиатура) Высокоуровневое описание трехмерных объектов

AGL, GLX, WGL Связь между OpenGL и оконной системой GLU (OpenGL Utility Library) Часть OpenGL NURBS, tessellators, quadric shapes, etc GLUT (OpenGL Utility Tookkit) Переносимый оконный API Неофициальная часть OpenGL

Application program X, Win32, Mac OS GL Software and/or hardware GLU GLX, AGL or WGL GLUT OpenGL motif widget or similar

Стабильность Надежность и переносимость Легкость применения Скорость выхода дополнений

Клиент-сервер Клиент – приложение Сервер - OpenGL Конвейер Данные обрабатываются последовательно, в несколько этапов. Набор команд Использует аппаратуру, если возможно Конечный автомат Значение переменных – состояние Команды изменяют состояние

Дисплейные списки Вычислители Вершинные операции Сборка примитивов

Пиксельные операции Сборка текстур Растеризация Пофрагментные операции

Задать контекст рисования Определить константные атрибуты и свойства (источники света, текстуры и т.д.) На каждом кадре: Очистить окно Задать положение камеры Для каждого объекта Определить преобразование Передать атрибуты Передать геометрию

Заголовочные файлы Библиотеки (для windows) opengl32.lib glu32.lib glut32.lib

Инициализация GLUT glutInit(&argc, argv); Установка режима окна glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); Установки окна glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); Создание окна glutCreateWindow (Super Application);

Определение функции отрисовки glutDisplayFunc(display); Определение функции изменения размеров окна glutReshapeFunc(reshape); Определение обработчиков устройств ввода glutMouseFunc(mouse); glutKeyboardFunc(keyboard); Вход в главный цикл glutMainLoop();

Вьюпорт glViewport() Матрица проекции glMatrixMode(GL_PROJECTION) glOrtho() glFrustum() gluPerspective() Видовая матрица glMatrixMode(GL_MODELVIEW)

Установка значений очистки glClear[Buf] Очистка glClear(GL_[BUF]_BUFFER_BIT); Colorцвета Depthглубины Accumнакопителя Stencilтрафарета Переключение буферов glutSwapBuffers();

glEnable(состояние) GL_ALPHA_TEST GL_LIGHTING etc glDisable(состояние) Функции, устанавливающие параметры

glIsEnabled(состояние) Функции, опрашивающие состояние glGetBooleanv glGetIntegerv etc Функции, сохраняющие и восстанавливающие состояние glPushAttrib / glPushClientAttrib glPopAttrib / glPopClientAttrib

enum glGetError(void) GL_NO_ERROR – ошибок нет с предыдущего вызова GL_INVALID_ENUM, GL_INVALID_VALUE – значение вне допустимого диапазона GL_INVALID_OPERATION – недопустимая операция в текущем состоянии GL_STACK_OVERFLOW, GL_STACK_UNDERFLOW – переполнение/опустошение стека GL_TABLE_TOO_LARGE – определенная таблица слишком велика GL_OUT_OF_MEMORY – нехватка памяти Команда, вызвавшая ошибку обычно игнорируется ВАЖНО: проводить опрос ошибок на каждом шаге рисования

glBegin(тип примитива) Координаты Цвет Вторичный цвет Нормаль Текстурные координаты (несколько) Координаты тумана glEnd()

Точки GL_POINTS Линии GL_LINES GL_LINE_STRIP GL_LINE_LOOP Треугольники GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Четырехугольники GL_QUADS GL_QUAD_STRIP Многоугольники GL_POLYGON

glVertex3fv ( v ) 2 – (x, y) 3 – (x, y, z) 4 – (x, y, z, w) Число компонент B – byte ub – unsigned byte s – short us – unsigned short I – int ui – unsigned int f – float d – double Тип данных «v» отсутствует для скалярных форм glVertex2f(x,y) Вектор

Координаты (glVertex) Цвет (glColor / glIndex) Вторичный цвет (glSecondaryColor) Нормаль (glNormal) Текстурные координаты (glTexCoord) Координаты тумана (glFogCoord)

glPointSiz e glPointSiz e GL_POINT_SMOOTH glLineWidth GL_LINE_SMOOTH glPolygonMode

Примитивы GLUT glutSolidCube(size) Примитивы GLU Квадрики Nurbs-поверхности

Заранее подготовленная последовательность команд Сгенерировать список (glGenLists) glNewList(uint список, enum режим) команды glEndList(void) Вызов (glCallList / glCallLists) Удалить список (glDeleteLists)

Использование массивов Определить массивы glVertexPointer glNormalPointer etc Разрешить использование вершинных массивов (glEnableClientState(enum array))

Использовать один элемент (glArrayElement) Нарисовать набор примитивов (glDrawArrays) Использовать массив индексов (glDrawElements) Использовать вложенные массивы (glInterleavedArray)

Очистить кадр Изменить положение объектов в зависимости от показаний таймера Нарисовать сцену Переключить буфер