OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8 — презентация
logo
OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8
  • OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8
  • OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8
  • OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8
  • GPU vs. CPU
  • 2D- ускорители
  • Графический конвейер
  • 3D -ускорители
  • Современные ускорители : шейдеры
  • OpenGL – многоплатформенная библиотека функций для создания интерактивных 2 D и 3D приложений.
  • OpenGL: клиент-сервер
  • Что нужно для работы с OpenGL
  • Литература
  • Литература. Продолжение.
  • Где взять GLut?
  • Самая простая программа
  • Работа с буфером кадра
  • Преобразование координат : viewport
  • Рисуем куб
  • Команды OpenGL
  • Модель begin/end
  • Формирование граней из вершин
  • Однородные координаты
  • Преобразование координат
  • Матрицы преобразований
  • Матрицы преобразований. Продолжение
  • Как работает gluPerspective?
  • gluPerspective: продолжение
  • Стек матриц
  • Виртуальная камера
1/29

Первый слайд презентации

OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8

Изображение слайда

Слайд 2

Методы создания изображений Точность и реалистичность : Трассировка лучей Излучательность Скорость : Полигональная графика

Изображение слайда

Слайд 3

Изображение слайда

Слайд 4: GPU vs. CPU

135 млн. транзисторов Тактовая частота 450Mhz 256MB 425MHz памяти 115 млн. транзисторов Тактовая частота 412Mhz 256MB 365MHz памяти Тактовая частота 1.8Ghz – 3.2Ghz 55 млн. Транзисторов ( core) NV35 R350

Изображение слайда

Слайд 5: 2D- ускорители

Копирование и перемещение прямоугольных блоков Отрисовка курсора мыши Отрисовка прямых линий и других примитивов Масштабирование прямоугольных блоков Прикладная программа Win32 API Драйвер Видеокарта

Изображение слайда

Слайд 6: Графический конвейер

T&L : Преобразование и освещение Rasterization : Разбиение примитивов на пиксели Pixel Ops : Запись пиксела в буфер кадра V i ={P,n,…} F j ={V 1,V 2,V 3 } V i ’ ={P ’,RGBA,…} { x i,y i,z i,RGBA i } { x i,y i,z i,RGBA i } F j ’ ={V 1,V 2,V 3 }

Изображение слайда

Слайд 7: 3D -ускорители

T&L Rasterization Pixel Ops Прикладная программа OpenGL Direct3D Драйвер Видеокарта “ Ускоряются ” этапы T&L и растеризации Взаимодействие с программой при помощи специальных API

Изображение слайда

R2 50 – R 3 50 T&L Rasterization Pixel Ops NV2 5 – NV 30 dp4 r0.x, v0, c[0] dp4 r0.y, v0, c[1] dp4 r0.z, v0, c[2] dp4 r0.w, v0, c[3] mov oD0, c[4] ; Output color mov oPos, r0 ; Output vertex ps.1.0 // DX8 Version. tex t0 // n-map. texm3x3pad t1, t0_bx2 texm3x3pad t2, t0_bx2 v0_bx2 texm3x3tex t3, t0_bx2 dp3_sat r0, t3_bx2,

Изображение слайда

http://www.opengl.org http://www.opengl.org.ru GLut – многоплатформенная библиотека вспомогательных функций для создания оконных приложений, использующих OpenGL Позволяет скрыть особенности программирования под данную оконную систему. Отраслевой стандарт с 1992 года

Изображение слайда

Слайд 10: OpenGL: клиент-сервер

/* прикладная программа * / #include<gl/gl.h> #include<gl/glu.h> … glEnable(GL_TEXTURE_2D); glBegin(GL_TRIANGLES); … glTexCoord2d(0.5,0.5); glVertex3f(1.0,0.5,-0.2); … glEnd(); … Сервер OpenGL Буфер кадра, Буфер глубины, Буфер трафарета, Буфер аккумулятора.

Изображение слайда

Слайд 11: Что нужно для работы с OpenGL

.cpp opengl32.lib gl.h glu32.lib glu.h glut32.lib glut.h opengl32.dll glu32.dll glut32.dll .exe C++

Изображение слайда

Слайд 12: Литература

Ю. Тихомиров. OpenGL. Программирование трехмерной графики, БХВ – Петербург, 2002 Эдвард Энджел. Интерактивная компьютерная графика. Вводный курс на базе OpenGL, 2-е изд., Вильямс, 2001

Изображение слайда

Слайд 13: Литература. Продолжение

Ву Мейсон, Нейдер Джеки, Девис Том, Шрайнер Дейв. OpenGL. Руководство по программиста. Диа-Софт, 2002. Френсис Хилл. OpenGL. Программирование компьютерной графики. Для профессионалов. Питер. 2002

Изображение слайда

Слайд 14: Где взять 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/ - работа с GLut

Изображение слайда

#include<gl/glut.h> #include<gl/gl.h> void reshape(int w, int h) { /* Здесь обрабатываем изменение размеров окна */ } void display(void) { /* Здесь помещаются команды рисования */ } void idle(void) { /* Здесь происходит анимация */ } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB); // GLUT_DOUBLE|GLUT_DEPTH|GLUT_STENCIL|GLUT_ACCUM glutCreateWindow(“ Самая простая программа ”); glutDisplayFunc(display); glutReshapeFunc(reshape); glutIdleFunc(idle); glutMainLoop(); return 0; }

Изображение слайда

Слайд 16: Работа с буфером кадра

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 green, GLclampf blue,GLclampf alpha); Задание цвета для заполнения буфера кадра Заполнение экранных буферов

Изображение слайда

void glViewport(GLint x,GLint y, GLsizei w,GLsizei h); w h void glDepthRange(GLclampd n,GLclampd f);

Изображение слайда

Слайд 18: Рисуем куб

x y z 0 1 2 3 4 5 6 7 Видимые грани : 7-6-5-4 6-7-3-2 7-5-1-3 Невидимые грани : 4-0-1-5 4-6-2-0 0-2-3-1

Изображение слайда

Слайд 19: Команды OpenGL

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) Вектор

Изображение слайда

Слайд 20: Модель begin/end

void glMatrixMode(…); void glLoadIdentity(); void glMultMatrixd(…); void glBegin(GLenum type); void glVertex(…); void glNormal(…); void glColor(…); void glEnd(); T&L Rasterization Pixel Ops void glTexture2d(…); void glTexEnv(…); void glPolygonMode(…); void glDepthFunc(…); void glBlendFunc(…); void glStencilOp(…);

Изображение слайда

Слайд 21: Формирование граней из вершин

1 0 2 3 4 5 GL_TRIANGLES: 0 1 2 3 4 5 6 7 GL_QUADS: GL_POLYGON: 0 1 3 2 5 4 6 7

Изображение слайда

Слайд 22: Однородные координаты

Общее аффинное преобразование сводится к умножению на матрицу Проецирование также сводится к умножению на матрицу

Изображение слайда

Слайд 23: Преобразование координат

Отсечение : Viewport V i ={P s,RGBA,…}

Изображение слайда

Слайд 24: Матрицы преобразований

void glMatrixMode(Glenum mode); mode={GL_MODELVIEW|GL_PROJECTION} void glLoadIdentity(); void glMultMatrixd(GLdouble c[16]); Выбираем матрицу преобразований для изменения : Две основные операции над матрицами :

Изображение слайда

Слайд 25: Матрицы преобразований. Продолжение

void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScaled(GLdouble x, GLdouble y, GLdouble z); void glRotated(GLdouble angle, GLdouble ax, GLdouble ay, GLdouble az); void gluPerspective(GLdouble fov, GLdouble aspect, GLdouble znear, GLdouble zfar);

Изображение слайда

Слайд 26: Как работает gluPerspective?

X Y Z 0 O 1 O 2 A 1 B 1 C 1 D 1 A 2 B 2 C 2 D 2 void gluPerspective(GLdouble fov, GLdouble aspect, GLdouble znear, GLdouble zfar); fov = D 1 OA 1 ( в градусах) aspect = C 1 D 1 /D 1 A 1 znear = |OO 1 | zfar = |OO 2 |

Изображение слайда

Слайд 27: gluPerspective: продолжение

Изображение слайда

Слайд 28: Стек матриц

glLoadIdentity(); glTranslated(…); glPushMatrix(); glRotated(…); glPopMatrix(); glPushMatrix(); glRotataed(…); glPopMatrix(); E T T T*R1 T T*R2 T

Изображение слайда

Последний слайд презентации: OpenGL и аппаратные ускорители графики Астана 2004 Лекция 8: Виртуальная камера

gluLookAt( eye x, eye y, eye z, aim x, aim y, aim z, up x, up y, up z ) Настройка виртуальной камеры eye – координаты наблюдателя aim – координаты “ цели ” up – направление вверх

Изображение слайда

Похожие презентации