OpenGL Лекция 2.. Преобразование координат Преобразования координат.

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



Advertisements
Похожие презентации
Освещение и текстурирование в OpenGL Астана 2004 Лекция 10.
Advertisements

OpenGL API Алексей Игнатенко (MSU Graphics & Media Lab) Алексей Игнатенко (MSU Graphics & Media Lab)
Астана ( )Компьютерная графика (лекция 6) ВВЕДЕНИЕ В OPENGL Лекция 6.
OpenGL Лекция 4 ( ). void glVertexPointer( GLint size, GLenum type, GLsizei stride, void *ptr ) size определяет число координат вершины (2, 3,
Фильтрация текстур. Пиксельные операции. Астана 2004 Лекция 11.
Компьютерная визуализация Лекция 3 СПбГУ ИТМО 2004.
{ OpenGL Лекция 3 ( ). float ambient[4] = {0.0, 0.0, 0.0, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); // RGBA интенсивность всей сцены.
Современные графические технологии ИЛИ OpenGL и графические процессоры 2010.
OpenGL Лекция 3. Построение тени Проективные тени Объемные тени Карты теней Мягкие тени.
OpenGL. Графический конвейер. Геометрические преобразования.
Лекция 2 ( ). * Для задания различных преобразований объектов сцены в OpenGL используются операции над матрицами, при этом различают три типа.
OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8.
Растеризация Текстуры Композиты. На лекции 4-е задание Задача растеризации Текстурирование Определение Текстурные отображения для сферы, тора, цилиндра.
Аффинные преобразования Графический конвейер Астана. Лекция 7.
Компьютерная графика. Лекция 4 Алгоритмы формирования изображений. Основы OpenGL.
Компьютерная графика. Лекция 5 Моделирование трехмерных поверхностей. Закрашивание.
GPU vs. CPU 302 млн. транзисторов Тактовая частота 550Mhz 1GB 850x2 MHz памяти 380 млн. транзисторов Тактовая частота 650Mhz 1GB 775x2 MHz памяти Тактовая.
Лекция 7 Аффинные преобразования Видовые преобразования 24 февраля 2003 г. (Астана)
Лекция 5 ( ). GLfloat fogColor[4]= {0.5f, 0.5f, 0.5f, 1.0f}; // Цвет тумана glClearColor(0.5f,0.5f,0.5f,1.0f); // Будем очищать экран, заполняя.
Лекция 7 Видовые преобразования 26 марта 2002 г..
Транксрипт:

OpenGL Лекция 2.

Преобразование координат

Преобразования координат

Видовое преобразование Проецирование Переход в нормализованные координаты Преобразование в области вывода

Управление окном просмотра glViewport(int x, int y, sizei w, sizei h) задание окна просмотра glDepthRange(clampd n, clampd f) задание множителя и смещения для координаты по глубине

Матричные преобразования glMatrixMode(enum mode) - установить текущую матрицу GL_TEXTURE GL_MODELVIEW GL_COLOR GL_PROJECTION glLoadMatrix{fd}(T m[16]) – загрузить матрицу glMultMatrix{fd}(T m[16]) – умножает текущую glLoadIdentity(void) – загрузить единичную

Матричные преобразования glRotate{fd}(T a, T x, T y, Tz) – вращение против часовой стрелки на угол a относительно оси (x, y, z) glTranslate{fd}(T x, T y, Tz) – перенос на вектор (x, y, z) glScale{fd}(T x, T y, Tz) – масштабирование по осям Эффект выполнения в обратном порядке

Видовое преобразование – Изменение положения камеры в пространстве Модельное преобразование – Изменение положения модели в пространстве Перемещение камеры = перемещение каждого объекта по отношению к фиксированной камере. Видовое преобразование эквивалентно нескольким модельным преобразованиям. gluLookAt( eye x, eye y, eye z, aim x, aim y, aim z, up x, up y, up z )

Матрицы проекции glOrtho(double l, double r, double b, double r, double n, double n) - задание ортографической проекции glFrustum(double l, double r, double b, double r, double n, double n) задание перспективной проекции gluPerspective(double FOV, double aspect, double znear, double zfar) задание перспективной проекции (в удобном виде)

Освещение

Принципы освещения Составляющие модели освещения OpenGL Материал объекта определяет его своейста его поверхности Цвет и положение источника света Глобальные параметры освещения рассеянный свет

Модель Фонга

Как устроено освещение? Модель Фонга (закраска по Гуро) Вычисляется на вершинах Составляющие модели освещения Свойства материала поверхности Свойства источника света Свойства модели освещения

Свойства материала Определение свойств материала для примитива glMaterialfv (face, property, value) GL_DIFFUSE GL_SPECULAR GL_AMBIENT GL_EMISSION GL_SHININESS

Свойства источника света glLightfv ( light, property, value ) цвет источника положение затухание

Типы источников света OpenGL поддерживает два типа источников света Локальные (точечные) источники Бесконечно удаленные (параллельные) источники Тип определяется координатой w w = 0 параллельный источник W 0 точечный источник (x / w, y / w, z /w)

Текстурирование

Определение текстурного изображения void glTexImage2D( GLenum target,target GLint level,level GLint internalformat,internalformat GLsizei width,width GLsizei height,height GLint border,border GLenum format,format GLenum type,type const GLvoid *pixelspixels );

Параметры текстуры void glTexParameterf( GLenum target, GLenum pname, GLfloat param );target pnameparam GL_TEXTURE_MIN_FILTER GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR GL_TEXTURE_MAG_FILTER GL_TEXTURE_WRAP_[TS]

Текстурные объекты void glGenTextures( GLsizei n, GLuint *textures ); - создать текстурный объектntextures void glDeleteTextures(GLsizei n, const GLuint *textures); - удалить текстурный объектntextures void glBindTexture( GLenum target, GLuint texture ); - связать текстурный объектtarget texture

Пример // Установка текстуры glEnable(GL_TEXTURE_2D); glGenTextures(1, &texture[0]);// Create The Texture glBindTexture(GL_TEXTURE_2D, texture[0]); glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]- >sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);..... // Рисование glBegin(GL_QUADS); // Front Face glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);... glEnd();

Туман void glFogf( GLenum pname, GLfloat param );pnameparam GL_FOG_MODE GL_FOG_DENSITY GL_FOG_START GL_FOG_END GL_FOG_COLOR

Пофрагментные операции

Альфа-тест Отбрасывает фрагменты, которые не проходят операцию сравнения void glAlphaFunc( GLenum func, GLclampf ref );funcref GL_NEVER GL_LESS GL_EQUAL GL_LEQUAL GL_GREATER GL_NOTEQUAL GL_GEQUAL GL_ALWAYS

Смешивание Комбинация приходящего фрагмента и фрагмента, находящегося в буфере кадра void glBlendFunc( GLenum sfactor, GLenum dfactor );sfactordfactor