Содержание
- 2. Методы создания изображений Точность и реалистичность: Трассировка лучей Излучательность Фотонные карты Скорость: Полигональная графика
- 3. Полигональное представление объектов Для каждой вершины заданы: Координаты вершины Нормаль Координаты текстуры И много чего еще
- 6. GPU vs. CPU > 3 млрд. транзисторов Тактовая частота 700Mhz 1.5GB GDDR5 памяти ??? транзисторов Тактовая
- 7. GPU vs. CPU (4 года назад) 120 млн. транзисторов Тактовая частота 500Mhz 128MB 500MHz памяти 107
- 8. Архитектура GF100
- 9. Буфер кадра Буфер кадра – прямоугольный массив структур 1280 1024
- 10. 2D-ускорители Копирование и перемещение прямоугольных блоков Отрисовка курсора мыши Отрисовка прямых линий и других примитивов Масштабирование
- 11. Графический конвейер T&L: Преобразование и освещение Rasterization: Разбиение примитивов на пиксели Pixel Ops: Запись пиксела в
- 12. 3D-ускорители T&L Rasterization Pixel Ops Прикладная программа OpenGL Direct3D Драйвер Видеокарта “Ускоряются” этапы T&L и растеризации
- 13. Поколение 4: Шейдеры R250-R580 T&L Rasterization Pixel Ops NV25-NV47 dp4 r0.x, v0, c[0] dp4 r0.y, v0,
- 14. OpenGL – многоплатформенная библиотека функций для создания интерактивных 2D и 3D приложений. http://www.opengl.org http://www.opengl.org.ru GLut –
- 15. OpenGL: клиент-сервер /* прикладная программа */ #include #include … glEnable(GL_TEXTURE_2D); glBegin(GL_TRIANGLES); … glTexCoord2d(0.5,0.5); glVertex3f(1.0,0.5,-0.2); … glEnd();
- 16. Что нужно для работы с OpenGL .cpp opengl32.lib gl.h glu32.lib glu.h glut32.lib glut.h opengl32.dll glu32.dll glut32.dll
- 17. Литература (1/5) Ю. Тихомиров. OpenGL. Программирование трехмерной графики, БХВ – Петербург, 2002 Эдвард Энджел. Интерактивная компьютерная
- 18. Литература (2/5) Ву Мейсон, Нейдер Джеки, Девис Том, Шрайнер Дейв. OpenGL. Руководство по программиста. Диа-Софт, 2002.
- 19. Литература (3/5) Гайдуков С.OpenGL. Профессиональное программирование трехмерной графики на C++. - БХВ-Петербург, 2004
- 20. Литература (4/5) Боресков А.В. Расширения OpenGL. - СПб.: БХВ-Петербург, 2005 Дж. Рост OpenGL. Трехмерная графика и
- 21. Литература (5/5) Миллер Т. DirectX 9 с управляемым кодом. Программирование игр и графика. – КомБук, 2005.
- 22. Где взять GLut? http://www.opengl.org/developers/ documentation/glut/index.html http://www.xmission.com/~nate/glut.html http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip http://www.xmission.com/~nate/glut/glut-3.7.6-src.zip Где прочитать про GLut? http://www.opengl.org.ru/coding/glut/ - работа с
- 23. Самая простая программа #include #include void reshape(int w, int h) { /* Здесь обрабатываем изменение размеров
- 24. Работа с буфером кадра void glClear(GLenum buffers); buffers = GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT| GL_ACCUM_BUFFER_BIT| GL_STENCIL_BUFFER_BIT void glClearColor(GLclampf red,GLclampf
- 25. Преобразование координат: viewport void glViewport(GLint x,GLint y, GLsizei w,GLsizei h); w h void glDepthRange(GLclampd n,GLclampd f);
- 26. Рисуем куб x y z Видимые грани: 7-6-5-4 6-7-3-2 7-5-1-3 Невидимые грани: 4-0-1-5 4-6-2-0 0-2-3-1
- 27. Команды OpenGL glVertex3fv ( v ) 2 – (x, y) 3 – (x, y, z) 4
- 28. Модель begin/end void glMatrixMode(…); void glLoadIdentity(); void glMultMatrixd(…); void glBegin(GLenum type); void glVertex(…); void glNormal(…); void
- 29. Формирование граней из вершин 1 0 2 3 4 5 GL_TRIANGLES: 0 1 3 2 4
- 30. Однородные координаты Общее аффинное преобразование сводится к умножению на матрицу Проецирование также сводится к умножению на
- 31. Преобразование координат Отсечение: Viewport Vi={Ps,RGBA,…}
- 32. Матрицы преобразований void glMatrixMode(Glenum mode); mode={GL_MODELVIEW|GL_PROJECTION} void glLoadIdentity(); void glMultMatrixd(GLdouble c[16]); Выбираем матрицу преобразований для изменения:
- 33. Матрицы преобразований. Продолжение void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScaled(GLdouble x, GLdouble y, GLdouble
- 34. Как работает gluPerspective? X Y Z 0 O1 O2 A1 B1 C1 D1 A2 B2 C2
- 35. gluPerspective: продолжение
- 36. Уменьшение количества вершин 1 0 2 3 4 5 GL_TRIANGLE_FAN: 3n vs. 1+n, n>1 1 0
- 37. Виртуальная камера gluLookAt( eyex, eyey, eyez, aimx, aimy, aimz, upx, upy, upz) Настройка виртуальной камеры eye
- 38. Лицевые и нелицевые грани void glFrontFace(GLenum type); type = {GL_CW|GL_CCW} void glCullFace(GLenum type); type = {GL_FRONT|GL_BACK
- 39. Дисплейные списки GLuint n = glGenLists(1); glNewList(n,GL_COMPILE); glEndList(); Дисплейный список (display list) – запомненная последовательность команд
- 40. Z-буфер Необходимо создать z-буфер glutDisplayMode(GLUT_DEPTH|/*…*/); Перед рисованием сцены очистить z-буфер glClear(GL_DEPTH_BUFFER_BIT|/*…*/); Включить или выключить сравнение z
- 41. Стек матриц glLoadIdentity(); glTranslated(…); glPushMatrix(); glRotated(…); glPopMatrix(); glPushMatrix(); glRotataed(…); glPopMatrix(); E T T T*R1 T T*R2
- 42. Рисуем тор x y z φ 0 X Z Y ϕ P Q Qi,j Qi+1,j Qi+1,j+1
- 43. Уравнение освещенности по Фонгу l n r P’ e Фоновое освещение не имеет источника и зависит
- 44. Модели Блинна и Шлика Вычисление отраженного вектора – трудоемкая операция (Блинн) Возведение в степень также работает
- 45. Уравнение освещенности OpenGL еm ,am , sm , dm , hm – свойства материала ai ,si
- 46. Установка параметров освещения в OpenGL void glMaterialfv(GLenum face,GLеnum param,GLfloat *value); face = {GL_FRONT|GL_BACK} param = {GL_AMBIENT|GL_DIFFUSE|GL_EMISSIVE|GL_SPECULAR}
- 47. Установка параметров освещения. Часть 2. void glLightfv(GLenum light, GL_POSITION,GLfloat *value); face = {GL_LIGHT0|GL_LIGHT1|…} value = float[4]
- 48. Интерполяция цвета Вычислить цвет (RGB) в каждой вершине. Вычислить цвет в точках P1 и P2: s
- 49. Недостатки закраски по Гуро
- 50. Интерполяция нормали Вычислить нормали (RGB) в каждой вершине. Вычислить нормаль в точках P1 и P2: s
- 51. Массивы вершин void glVertexPointer(GLint size,GLenum type, GLsizei stride,const GLvoid *pointer; Задаем массив вершин, нормалей и текстурных
- 52. Растеризация V1 V2 V3 Интерполяция цвета вдоль примитива - закраска по Гуро Интерполяция координаты z
- 53. I=0 I=0 I=1 I=1 I=0 I=0 I=1 I=1 Ошибки линейной интерполяции Освещенность зависит от способа разбиения
- 54. Текстурирование u v 0 x y 0 “Перспективное” текстурирование: 1 1 x1,y1,u1,v1 x2,y2,u2,v2 x3,y3,u3,v3
- 55. Текстурирование в OpenGL GLuint texture; glGenTextures(1,&texture); Создаем текстуру - прямоугольный массив с цветами пикселов. Высота и
- 56. Текстурирование в OpenGL: часть 2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- 57. Текстурирование в OpenGL: часть 3 Разрешаем текстурирования Задаем текстурные координаты (обычно для каждой вершины) glEnable(GL_TEXTURE_2D); glTexCoord2d(u,v);
- 58. Как загрузить картинку из файла? Воспользоваться любой другой сторонней библиотекой Функции BmpLoad из примеров: Классы из
- 59. Фильтрация текстур Выборка ближайшего текселя GL_NEAREST: Линейная комбинация 4-x соседних пикселей GL_LINEAR:
- 60. Свертка текстурных координат glTexParameteri(…,GL_REPEAT); glTexParameteri(…,GL_REPEAT); glTexParameteri(…,GL_CLAMP); glTexParameteri(…,GL_REPEAT); glTexParameteri(…,GL_REPEAT); glTexParameteri(…,GL_CLAMP); glTexParameteri(…,GL_CLAMP); glTexParameteri(…,GL_CLAMP);
- 61. Фильтрация текстур: mipmapping увеличение текстуры масштаб 1:1 уменьшение текстуры увеличение текстуры масштаб 1:1 уменьшение текстуры в
- 62. Фильтрация текстур: mipmapping. Часть 2 256x256, λ=0 64x64, λ=2 16x16, λ=4 Трилинейная фильтрация GL_LINEAR_MIPMAP_LINEAR
- 63. Анизотропная фильтрация Экран Расширение “GL_EXT_texture_filter_anisotropic”
- 64. Текстура и освещение RGBAf из модуля T&L RGBAt текстуры RGBAс результат + = Модулирование GL_MODULATE (по
- 65. Генерация текстурных координат Линейная зависимость Environment mapping - эффект отражающей поверхности r n h P’ (u,v)
- 66. Генерация текстурных координат. Продолжение Включаем автоматическую генерацию текстурных координат (для первыхдвух координат) glEnable(GL_TEX_GEN_S); glEnable(GL_TEX_GEN_T); Включаем автоматическую
- 67. Использование текстуры как фонового изображения Устанавливаем ортогональную проекцию glMatrixMode(GL_PROJECTION); glLoadIndentity(); glOrtho(-1,1,-1,1,-1,1); Устанавливаем ортогональную проекцию glMatrixMode(GL_MODELVIEW); glLoadIndentity();
- 68. Преобразование текстурных координат Работаем с матрицей T точно также как с M и P. glMatrixMode(GL_TEXTURE); glLoadIdentity();
- 69. Пиксельные операции T&L Rasterization Pixel Ops Буфер кадра Буфер глубины Буфер трафарета Буфер аккумулятора
- 70. Пиксельные операции. Продолжение. Scissor test Alpha test Stencil test Depth test Blending Stencil Buffer: Sij Z
- 71. Scissor & Alpha test Не записывать пиксел Не записывать пиксел Нет Нет Да Да glScissor(x,y,w,h); glEnable(GL_SCISSOR_TEST);
- 72. Смешение цветов glEnable(GL_BLEND); glDisable(GL_BLEND); glBlendFunc(sfactor,dfactor) Команды OpenGL: glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA): glBlendFunc(GL_ONE_MINUS_SRC_ALPHA,GL_SRC_ALPHA): glBlendFunc(GL_ZERO,GL_SRC_COLOR):
- 73. Карты освещенности (lightmaps) (i,j) Карта освещенности: Мультитекстурирование: Экономия количества примитивов при динамическом освещении Экономия текстур при
- 74. Смещение вершин При использовании буфера глубины могут возникнуть проблемы с рисование граней, лежащих в одной плоскости.
- 75. Мультитекстурирование F(RGBAc,RGBA0) RGBA0 Texture 0 Lighting RGBAc RGBA1 Texture 1 RGBAf F(RGBAf,RGBA1) Объединение текстуры объекта и
- 76. Расширения OpenGL Читаем спецификацию расширения (ARB_multitexture) Определяем константы … #define GL_TEXTURE0_ARB 0x84C0 #define GL_TEXTURE1_ARB 0x84C1 #define
- 77. Расширения OpenGL. Продолжение Получаем список доступных расширений char *extensions = glGetString(GL_EXTENSIONS);
- 78. Расширения OpenGL. Часть 3. Получаем указатели на функции … glActiveTexture = wglGetProcAddress("glActiveTextureARB"); glMultiTexCoord2d = wglGetProcAddress("glMultiTexCoord2dARB"); …
- 79. Расширения OpenGL. Часть 4. Задаем смешение цвета освещения и цвета первой текстуры … (*glActiveTexture)(GL_TEXTURE0_ARB); glTexEnvi(…); …
- 80. Полупрозрачные объекты Полупрозрачная грань - грань через часть пикселов которой видно лежащие за ней грани. Полупрозрачные
- 81. Буфер трафарета и буфер глубины RGBAx,y=F(RGBAx,y,RGBAf) Изменение Sx,y Изменение Sx,y Изменение Sx,y Да Да Нет Нет
- 82. Буфер трафарета: видимость пикселей true Sx,y=1 для грани F - Запись пикселя Да Да Нет F
- 83. Буфер трафарета: обработка пикселей Sx,y==1? - - Запись пикселя Да Да Нет - Нет F F
- 84. Буфер трафарета: тени и отражения Отбрасывание тени на плоскую грань Правильно Неправильно Отражения и порталы
- 85. Буфер трафарета: теневые объемы Строим теневой объем Рисуем затеняемый объект со включенным Z-буфером Z Y …
- 86. Теневые объемы. Продолжение. Рисуем нелицевые грани теневого объема Z Y … glEnable(GL_STENCIL_TEST); glStencilFunc(GL_ALWAYS,1,1); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
- 87. Теневые объемы. Часть 3. Рисуем лицевые грани теневого объема Z Y … glStencilFunc(GL_ALWAYS,1,1); glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT);
- 88. Теневые объемы. Часть 4. Возможен вывод граней теневого объема в произвольном порядке. Z Y … glStencilFunc(GL_ALWAYS,1,1);
- 89. Теневые объемы. Часть 5. Рисуем затененную часть объекта Z Y … glStencilFunc(GL_EQUAL,1,1); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); …
- 90. Кубические карты: определение. V t R Точка R = R(t), t = (p,q,r) определяет одну из
- 91. Кубические карты среды. n P’ е r R Необходимо применить к текстурным координатам преобразование, обратное модельно-видовому!
- 92. Кубические карты освещения. t P’ Пусть источники освещения находятся далеко от объекта. Тогда освещение в точке
- 93. Построение отражающего объекта. O Переносим наблюдателя в центр отражающего объекта и строим изображение, полученное при взгляде
- 95. Скачать презентацию






























![Матрицы преобразований void glMatrixMode(Glenum mode); mode={GL_MODELVIEW|GL_PROJECTION} void glLoadIdentity(); void glMultMatrixd(GLdouble c[16]); Выбираем](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/426283/slide-31.jpg)





























































Гражданин
Математикам и физикам посвящается
Литературное чтение 3 класс
Изобразительное искусство. Орнамент
Самообразование как методология работы с одаренными детьми
מצגת סמיכות- ענבל פרידמן
Кадровый документооборот. Номенклатура дел. Сроки хранения бухгалтерских документов
Презентация на тему Химический алфавит
Размеры пены
Потребительское кредитование
Оптические иллюзии или Обман зрения
Job advertisements
Оценочные кулинарные системы мира
Мониторинг диагностической работы педагога-психолога
Разговорный стиль речи
Американская социально-психологическая школа. Теория Д. Мак-Грегора
Разработка индивидуальных траекторий самообразования в режиме командных проектных работ, и в условиях конкурентной борьбы
Матрицы портфельного анализа
Слабые люди считают, что наркотики могут помочь справиться с проблемами …
Семинар Пятиклассники
Здоровье дошкольников – забота общая
Bingo
растениеводство
Презентация урока истории в 8 классеТема урока: « Художественные промыслы России 19 века.» Учитель истории: Авакян С.Г.
Организационная культура организации, как платформа для качественного управления персоналом
Презентация на тему Трудовые ресурсы и показатели их оценки
Декоративная фанера
Приложение 8 к технической документации (Оборудование для дилера по проекту WA)