1 / 25

OpenGL

OpenGL. Лекция 2. Преобразование координат. Преобразования координат. Преобразования координат. Видовое преобразование Проецирование Переход в нормализованные координаты Преобразование в области вывода. Управление окном просмотра.

dara
Télécharger la présentation

OpenGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL Лекция 2.

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

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

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

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

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

  7. Матричные преобразования • 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) – масштабирование по осям • Эффект выполнения в обратном порядке

  8. Видовое преобразование • Видовое преобразование • Изменение положения камеры в пространстве • Модельное преобразование • Изменение положения модели в пространстве • Перемещение камеры = перемещение каждого объекта по отношению к фиксированной камере. Видовое преобразование эквивалентно нескольким модельным преобразованиям. • gluLookAt( eyex, eyey, eyez, aimx, aimy, aimz, upx, upy, upz)

  9. Матрицы проекции • 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) — задание перспективной проекции (в удобном виде)

  10. Освещение

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

  12. Модель Фонга

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

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

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

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

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

  18. Определение текстурного изображения void glTexImage2D( GLenumtarget, GLintlevel, GLintinternalformat, GLsizeiwidth, GLsizeiheight, GLintborder, GLenumformat, GLenumtype, const GLvoid *pixels );

  19. Параметры текстуры • void glTexParameterf( GLenumtarget,GLenumpname,GLfloatparam); • GL_TEXTURE_MIN_FILTER • GL_NEAREST • GL_LINEAR • GL_NEAREST_MIPMAP_NEAREST • GL_LINEAR_MIPMAP_LINEAR • GL_TEXTURE_MAG_FILTER • GL_TEXTURE_WRAP_[TS]

  20. Текстурные объекты • void glGenTextures( GLsizein,GLuint *textures); - создать текстурный объект • void glDeleteTextures(GLsizein, const GLuint *textures); - удалить текстурный объект • void glBindTexture( GLenumtarget, GLuinttexture ); - связать текстурный объект

  21. Пример • // Установка текстуры • 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();

  22. Туман • void glFogf( GLenumpname,GLfloatparam); • GL_FOG_MODE • GL_FOG_DENSITY • GL_FOG_START • GL_FOG_END • GL_FOG_COLOR

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

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

  25. Смешивание • Комбинация приходящего фрагмента и фрагмента, находящегося в буфере кадра • void glBlendFunc( GLenumsfactor,GLenumdfactor);

More Related