Скачать презентацию Современные графические технологии ИЛИ Open GL и графические Скачать презентацию Современные графические технологии ИЛИ Open GL и графические

OpenGL Intro.ppt

  • Количество слайдов: 23

Современные графические технологии ИЛИ Open. GL и графические процессоры 2009 Современные графические технологии ИЛИ Open. GL и графические процессоры 2009

Полигональное представление объектов Объект задан набором вершин, которые объединены в плоские грани, чаще всего Полигональное представление объектов Объект задан набором вершин, которые объединены в плоские грани, чаще всего – треугольные. Для каждой вершины заданы: q Координаты вершины q Нормаль q Координаты текстуры

GPU vs. CPU G 92 q 681 млн. транзисторов q Тактовая частота 600 Mhz GPU vs. CPU G 92 q 681 млн. транзисторов q Тактовая частота 600 Mhz R 70 0 q 956 млн. транзисторов q Тактовая частота 750 Mhz q 1 GB 900 x 4 MHz q 1 GB 1 x 2 GHz памяти q Тактовая частота 3. 2 Ghz Intel QX 9770 q 820 млн. транзисторов (dual core)

GPU vs. CPU (4 года назад) NV 3 0 q 120 млн. транзисторов q GPU vs. CPU (4 года назад) NV 3 0 q 120 млн. транзисторов q Тактовая частота 500 Mhz R 30 0 q 107 млн. транзисторов q Тактовая частота 325 Mhz q 128 MB 310 MHz q 128 MB 500 MHz памяти q Тактовая частота 1. 6 Ghz – 3. 06 Ghz q 42 млн. Транзисторов (core)

Буфер кадра – прямоугольный массив структур <Red, Green, Blue> 128 0 102 4 Буфер кадра – прямоугольный массив структур 128 0 102 4

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

Графический конвейер Vi={P, n, …} T&L: Fj={V 1, V 2, V 3} Преобразование. Vi’={P’, Графический конвейер Vi={P, n, …} T&L: Fj={V 1, V 2, V 3} Преобразование. Vi’={P’, RGBA, …} Fj’={V 1, V 2, V 3} и освещение Rasterization: Разбиение примитивов на пиксели { Pixel Ops: xi, yi, zi, RGBAi. Запись пиксела } в буфер кадра { xi, yi, zi, RGBAi }

3 D-ускорители q “Ускоряются” этапы T&L и растеризации T&L Rasterization Pixel Ops q Взаимодействие 3 D-ускорители q “Ускоряются” этапы T&L и растеризации T&L Rasterization Pixel Ops q Взаимодействие с программой при помощи специальных API Прикладная Open. GL программа Direct 3 D Драйвер Видеокарта

Поколение 4: Шейдеры R 250 -R 580 NV 25 NV 47 T&L dp 4 Поколение 4: Шейдеры R 250 -R 580 NV 25 NV 47 T&L dp 4 mov r 0. x, v 0, r 0. y, v 0, r 0. z, v 0, r 0. w, v 0, o. D 0, c[4] o. Pos, r 0 Rasterization Pixel Ops c[0] c[1] c[2] c[3] ; Output color ; Output vertex ps. 1. 0 // DX 8 Version. tex t 0 // n-map. texm 3 x 3 pad t 1, t 0_bx 2 texm 3 x 3 pad t 2, t 0_bx 2 v 0_bx 2 texm 3 x 3 tex t 3, t 0_bx 2 dp 3_sat r 0, t 3_bx 2,

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

Open. GL: клиент-сервер /* прикладная программа */ #include<gl/gl. h> #include<gl/glu. h> Сервер Open. GL Open. GL: клиент-сервер /* прикладная программа */ #include #include Сервер Open. GL … gl. Enable(GL_TEXTURE_2 D); gl. Begin(GL_TRIANGLES); … gl. Tex. Coord 2 d(0. 5, 0. 5); gl. Vertex 3 f(1. 0, 0. 5, -0. 2); … gl. End(); … Буфер кадра, глубины, трафарета, аккумулятора.

Что нужно для работы с Open. GL opengl 32. lib glu 32. lib . Что нужно для работы с Open. GL opengl 32. lib glu 32. lib . cpp gl. h glu. h opengl 32. dll glu 32. dll . exe C++ glut. h glut 32. lib glut 32. dll

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

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

Литература (3/5) Гайдуков С. Open. GL. Профессиональное программирование трехмерной графики на C++. - БХВ-Петербург, Литература (3/5) Гайдуков С. Open. GL. Профессиональное программирование трехмерной графики на C++. - БХВ-Петербург, 2004

Литература (4/5) Боресков А. В. Расширения Open. GL. - СПб. : БХВ-Петербург, 2005 Дж. Литература (4/5) Боресков А. В. Расширения Open. GL. - СПб. : БХВ-Петербург, 2005 Дж. Рост Open. GL. Трехмерная графика и язык программирования шейдеров - СПб. : Питер, 2005

Литература (5/5) Миллер Т. Direct. X 9 с управляемым кодом. Программирование игр и графика. Литература (5/5) Миллер Т. Direct. X 9 с управляемым кодом. Программирование игр и графика. – Ком. Бук, 2005. Горнаков С. Direct. X 9. Уроки программирования на C++. – БХВ, 2004.

Где взять GLut? • http: //www. opengl. org/developers/ documentation/glut/index. html • http: //www. xmission. Где взять GLut? • http: //www. opengl. org/developers/ documentation/glut/index. html • http: //www. xmission. com/~nate/glut/glut-3. 7. 6 -bin. zip • http: //www. xmission. com/~nate/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) { /* Самая простая программа #include #include void reshape(int w, int h) { /* Здесь обрабатываем изменение размеров окна */ } void display(void) { /* Здесь помещаются команды рисования */ } void idle(void) { /* Здесь происходит анимация */ } int main(int argc, char **argv) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_RGB); // GLUT_DOUBLE|GLUT_DEPTH|GLUT_STENCIL|GLUT_ACCUM glut. Create. Window(“Самая простая программа”); glut. Display. Func(display); glut. Reshape. Func(reshape); glut. Idle. Func(idle); glut. Main. Loop(); return 0; }

Работа с буфером кадра q Задание цвета для заполнения буфера кадра void gl. Clear. Работа с буфером кадра q Задание цвета для заполнения буфера кадра void gl. Clear. Color(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); Представление цвета в Open. GL q Заполнение экранных буферов void gl. Clear(GLenum buffers); buffers = GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT| GL_ACCUM_BUFFER_BIT| GL_STENCIL_BUFFER_BIT

Преобразование координат: viewport void gl. Viewport(GLint x, GLint y, GLsizei w, GLsizei h); h Преобразование координат: viewport void gl. Viewport(GLint x, GLint y, GLsizei w, GLsizei h); h w void gl. Depth. Range(GLclampd n, GLclampd f);