OpenGL. Biblioteka procedur graficznych. GLU = OpenGL Utility Library. GLX = OpenGL Extension to the X Window System [tm]

Podobne dokumenty
3 Przygotował: mgr inż. Maciej Lasota

Zatem standardowe rysowanie prymitywów wygląda następująco:

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

Temat: Wprowadzenie do OpenGL i GLUT

Temat: Transformacje 3D

OpenGL - charakterystyka

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

Prosty program- cpp. #include <GL/glut.h>

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

Studium podyplomowe. Programowanie w OpenGL. Michał Turek, AGH Kraków

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Janusz Ganczarski. OpenGL Pierwszy program

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

Programowanie Równoległe wykład, CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

Bufor koloru cd. Czyszczenie bufora koloru glclearcolor( )

Wizualizacja 3D. dr inż. Marcin Gabryel

Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

Wprowadzenie do klas w C++ oraz biblioteki opengl

OpenGL przezroczystość

OpenGL Zaawansowana grafika komputerowa

Ćwiczenie nr 1 Szkielet aplikacji wykorzystującej bibliotekę OpenGL dla środowiska Windows z wykorzystaniem Visual C++

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

OpenGL : Prymitywy, obsługa klawiatury

Laboratorium grafiki komputerowej i animacji. Ćwiczenie III - Biblioteka OpenGL - wprowadzenie, obiekty trójwymiarowe: punkty, linie, wielokąty

Grafika trójwymiarowa

OpenGL. Silicon Graphics (IRIS GL stacje graficzne)

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

Teksturowanie (ang. texture mapping)

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++)

8 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota

OpenGL - maszyna stanu. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 7. Grupy atrybutów. Zmienne stanu.

Zaawansowane programowanie w C++

Rzutowanie DOROTA SMORAWA

Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie

PRZEKSZTAŁCENIA W PRZESTRZENI 3D czyli matematyczny zawrót głowy. Część2 :Rodzaje układów współrzędnych. Obroty i Skalowanie

Programowanie, część III

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Wstęp do Programowania, laboratorium 02

6 Przygotował: mgr inż. Maciej Lasota

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Część 4 życie programu

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Grafika 3D OpenGL część II

OpenGL - tekstury Mapowanie tekstur

OpenGL oświetlenie i tekstury. OpenGL oświetlenie. Bogdan Kreczmer.

Tekstury. Dorota Smorawa

Teksturowanie. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 10. Tekstury. Proces nakładania tekstury.

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Modelowanie komputerowe dynamiki płynów Maciej Matyka Instytut Fizyki Teoretycznej

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

OpenGL model oświetlenia

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Mobilne aplikacje multimedialne. OpenGL

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

OpenGL transformacje przestrzenne

I - Microsoft Visual Studio C++

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie III. Biblioteka OpenGL - wprowadzenie, obiekty trójwymiarowe: punkty, linie, wielokąty

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Światło. W OpenGL można rozróżnić 3 rodzaje światła

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Argumenty wywołania programu, operacje na plikach

Potok graficzny i shadery. Hubert Rutkowski

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Biblioteka OpenGL: Wprowadzenie

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

x szereg(x)

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

Programowanie w środowiskach RAD Qt i C++

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

dr inż. Jacek Dąbrowski, KSG

OpenGL Światło (cieniowanie)

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

GRUPY SYMETRII Symetria kryształu

Plan wykładu. Akcelerator 3D Potok graficzny

Grafika Komputerowa, Informatyka, I Rok

OpenGL i Qt. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie warstwy wizualnej gry

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

OpenGL teksturowanie

Programowanie obiektowe i zdarzeniowe

Bartosz Bazyluk DEFINIOWANIE GEOMETRII Sposoby opisu geometrii brył w OpenGL. Grafika Komputerowa, Informatyka, I Rok

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

GRK 4. dr Wojciech Palubicki

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Przekształcenia geometryczne. Dorota Smorawa

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Pochodna kierunkowa i gradient Równania parametryczne prostej przechodzącej przez punkt i skierowanej wzdłuż jednostkowego wektora mają postać:

OpenGL Światło (cieniowanie)

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Transkrypt:

OpenGL http://www.opengl.org/documentation/red_book/ http://www.gamedev.net/download/redbook.pdf Biblioteka procedur graficnch środowiko Klient Serwer aplikacja = klient erwer moŝe bć na innm komputere tpow erwer = tem operacjn tpu window grafika podtawowego poiomu elementarne obiekt (prmitw = primitive) GLU = OpenGL Utilit Librar aawanowane procedur graficne GLX = OpenGL Etenion to the X Window Stem [tm] komunikacja temem X Window GLUT = OpenGL Utilit Toolkit komunikacja dowolnm temem tpu window OpenGLUT now projekt opart m.in. na GLUT 37 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

GLUT Graphic Librar Utilit Toolkit Biblioteka funkcji do komunikacji temem window +... Stem okien (window) jet terowan dareniami (event) #include <GL/openglut.h>... int main(int argc, char *argv[]) { glutinit(&argc, argv); glutinitwindowsie(windw, windh); glutinitwindowpoition(,); //glutinitdiplamode(glut_rgb GLUT_SINGLE); wbiera argv opcje GLUTa w pikelach Na ielono opcjonalne glutcreatewindow("title"); tu OpenGL tandard } //m_init(); glutdiplafunc(proc_paint); glutkeboardfunc(proc_ke); glutmouefunc(proc_moue); glutmainloop(); return EXIT_SUCCESS; funkcje obługi dareń event handler pętla obługi dareń event loop 38 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Model operacjn OpenGL Lita poleceń Dipla Lit polecenia Command Oblicenia Evaluator Operacje na wierchołkach i kontrukcja prmitwów Per-verte Operation and Primitive Aembl Pamięć tektur Teture Memor Ratrowanie Rateriation Pamięć ratra Frame buffer Operacje na pikelach Piel Operation 39 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Elementarne obiekt graficne prmitw Figur geometrcne ą tworone wierchołków: glbegin(glenum mode ); glverte...(,,...); glverte...(,,...);... glevalcoord...(t,...); glend(); mode GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON 4 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Prkład void Paint(void) { glclearcolor(,,,); glclear(gl_color_buffer_bit); glcolor3d(,,.5); gllinewidth(); glbegin(gl_line_loop); glverte2d(, ); glverte2d(.4, ); glverte2d(-.,.7); glend(); glfluh(); } 4 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Prkład 2 void Paint(void) { glclearcolor(,,,); glclear(gl_color_buffer_bit); glbegin(gl_triangles); glcolor3d(,,); glverte2d(, ); glcolor3d(,,); glverte2d(.4, ); glcolor3d(,,); glverte2d(-.,.7); glend(); glfluh(); } glshademodel(gl_smooth); Model cieniowania Shading model glshademodel(gl_flat); 42 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Układ wpółrędnch Układ wpółrędnch wiąan oberwatorem w punkcie (,,). ee coordinate M Aktualn układ wpółrędnch, w którm podajem wpółrędne wierchołków Pocątkowo M = I 43 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

W. Słomińki, "Wtęp do grafiki komputerowej" - 26 44 Od wp. uŝtkownika do wp. urądenia M P [ ] 3, / / / w w w w w Wpółrędne obiektów, jak w glverte4d(,,,w ); glverte3d(,, ); w = glverte2d(, ); =, w = V

Rut protopadł = -n = -f (l, b, -n) (r, t, -n) f > n void glortho( GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f ); gluortho2d(l, r, b, t ) = glortho(l, r, b, t, -, ); Domślnie: gluortho2d(-,,-,); 45 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Perpektwa = -n = -f (l, b, -n) (r, t, -n) f > n > void glfrutum( GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f ); (r-l )/(t-b) tutaj: l = -r, b = -t void gluperpective( GLdouble ang, GLdouble apect, GLdouble n, GLdouble f ); 46 [, 8] W. Słomińki, "Wtęp do grafiki komputerowej" - 26

W. Słomińki, "Wtęp do grafiki komputerowej" - 26 47 Maciere projekcji glfrutum(l, r, b, t, n, f ); + + + = 2 2 2 n f fn n f n f b t b t b t n l r l r l r n P glortho(l, r, b, t, n, f ); + + + = 2 2 2 n f n f n f b t b t b t l r l r l r P

Viewport (W, H) Okno utworone pre tem window (, ) (, ) (+ width, + height) V glviewport( GLint, GLint, GLiei width, GLiei height ); - - Domślnie: glviewport(,,w,h); Wpółrędne normaliowane 48 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Zmiana połoŝenia oberwatora M O r + U r O r C r void glulookat( GLdouble e, GLdouble e, GLdouble e, GLdouble c, GLdouble c, GLdouble c, GLdouble U, GLdouble U, GLdouble U ) ; O r C r U r Obrót i Tranlacja M Kierunek nowej oi Y 49 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

W. Słomińki, "Wtęp do grafiki komputerowej" - 26 5 Viewport Clipping Tlko ą rowane. Perpective diviion Modelview & Projection Podumowanie tranformacji = w PM w = / / / ˆ ˆ ˆ w w w w [ ] 3, ˆ ˆ ˆ h w 2 ˆ 2 ˆ + + = + + = = ˆ ˆ V

Krwa Béier topnia N r N N N = k k k k N k ( t) = B ( P, K, P ; t) = t ( t) P, t [,] N. Definicja odworowania: glmapf(gl_map_vertex_3,.,., Pdit, N+, P); glenable(gl_map_vertex_3); Punkt kontrolne: float P[] = {,,,...,,,...}; 2. Rowanie krwej int N_SEGS = 64; glbegin(gl_line_strip); for(i = ; i <= N_SEGS; i++ ) glevalcoordf((glfloat)i/n_segs); glend(); Pdit = & - & = ilość floatów na jeden punkt 5 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Prkład 3 52 tatic void render(void) { int i, NSEGS=64; glclearcolor(,,,); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glmapf( GL_MAP_VERTEX_3,.,., 3, 4, P); glenable( GL_MAP_VERTEX_3 ); gllinewidth(2); glcolor3d(,,); glbegin(gl_line_strip); for(i=; i<=nsegs; i++) glevalcoordf((glfloat)i/nsegs); glend(); glpointsie(6); glcolor3d(,,); glbegin(gl_points); for(i = ; i < 4; i++) glverte3fv(p); glend(); gllinewidth(); glcolor3d(,,); glbegin( GL_LINES ); for(i = ; i < 4; i++) glverte3fv(p); glend(); glutswapbuffer(); } W. Słomińki, "Wtęp do grafiki komputerowej" - 26

NURBS topnia N. Definicja odworowania: GLUnurbObj* nobj = glunewnurbrenderer(); glunurbpropert(nobj, GLU_SAMPLING_TOLERANCE, 5.); Punkt kontrolne: GLfloat P[] = {,,,...,,,...}; Węł: GLfloat knot[] = {,..., }; Nknot = NPt + N + 53 2. Rowanie krwej glubegincurve(nobj); glunurbcurve(nobj, Nknot, knot, Pdit, P, NPt, GL_MAP_VERTEX_3); gluendcurve(nobj); 3. Zwalnianie pamięci gludeletenurbrenderer(nobj); Pdit = & - & = ilość floatów na jeden punkt W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Prkład 4 tatic void render(void) { int i;... GLUnurbObj* nobj = glunewnurbrenderer(); glunurbpropert(nobj, GLU_SAMPLING_TOLERANCE, 5.); GLfloat knot[8] = {,,,,,,,}; gllinewidth(4); glcolor3d(,,); glubegincurve(nobj); glunurbcurve(nobj, NctrlPoint+Degree+, knot+degree-, 3, P, NctrlPoint, GL_MAP_VERTEX_3); gluendcurve(nobj); gludeletenurbrenderer(nobj);... glfluh(); } 54 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Tektur (Teture) Tektura to prepi mówiąc, jak wpełniać kolorem wbrane obar. Prkład: Zaada : wpełnij obar kolorem od (,,) do (,,) 5 55 - W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Tektura -wmiarowa Odworowanie: [,] { r( ), g( ), b( ), α( ),...} f() Prkład (c.d.) r = g = b = f, α = Obraek tektur Mapowanie tektur (teture mapping).9 5 56.2 - W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Mapowanie tektur (teture mapping) Prpianie kaŝdemu punktowi obaru konkretnej wartości wpółrędnej tektur,. Wierchołek k : wpółrędne pretrenne ( k, k ), wpółrędne tektur ( k ) = = 2 =.9 pośrednie wartości : interpolacja liniowa pośrednie wartości : interpolacja liniowa Podtawowa metoda to interpolacja liniowa. Tak jet w OpenGL. =.2 =.9 57 = cont. W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Mapowanie tektur (2) To jet krwa Beier. Pośrednie wartości = parametrowi krwej Fragment kodu OpenGL: int i, NSeg=64; float ; glbegin(gl_line_strip); for(i = ; i <= NSeg; i++) { = (GLfloat)i/NSeg; gltecoordf(); glevalcoordf(); } glend(); Utala wartość, jaka będie prpiana kaŝdemu nowemu wierchołkowi Twor now wierchołek o wpółrędnch odp. wartości parametru =. 58 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Mapowanie tektur (3) Wartości poa prediałem [, ]. Pred wliceniem wartości tektur ą amieniane na [, } 2 = 5 2 = 5 = - = 5 = - = = = = < > [, ] = 5 [,) wrap = GL_CLAMP wrap = GL_REPEAT glteparameterf(gl_texture_d, GL_TEXTURE_WRAP_S, wrap); 59 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Obraek tektur (teture image) f() r = g = b = f, α = Obraek tektur pikel W kaŝdm piklu RGBA np. 64 pikle To definiuje wór tektur, tak jak obraek piklow opiuje obra analogow Stąd inna definicja: Tektur, to obraki piklowe, którch pobieram informację, jak wpełniać kolorem wbrane obar. 6 W. Słomińki, "Wtęp do grafiki komputerowej" - 26

Tektur 2- i więcej wmiarowe t glteimaged(...) glteimage2d(...) W werji OpenGL.* tektur - i 2-wmiarowe. W werji 2. takŝe 3-wmiarowe (, t, r) W ogólnm prpadku wierchołek k : wpółrędne pretrenne ( k, k, k, w k ), wpółrędne tektur ( k, t k, r k, q k ) 6 W. Słomińki, "Wtęp do grafiki komputerowej" - 26