Bufor koloru cd. Czyszczenie bufora koloru glclearcolor( )

Wielkość: px
Rozpocząć pokaz od strony:

Download "Bufor koloru cd. Czyszczenie bufora koloru glclearcolor( )"

Transkrypt

1 Wizualizacje 3D

2 Bufor koloru Bufor koloru służy do przechowywania obrazu renderowanej sceny 3D. Typowo OpenGL stosuje dwa bufory koloru: przedni i tylny. Bieżąca scena znajduje się w przednim buforze i jest wyświetlana na ekranie monitora, a jednocześnie w tylnym buforze rysowana jest kolejna ramka sceny. Po zakończeniu rysowania, bufory są zamieniane i cały proces zaczyna się od początku.

3 Bufor koloru cd. Wybór działania bufora wybiera się na początku działania programu funkcją glutinitdisplaymode( arg ) przyjmuje jako argument maskę bitową GLUT_SINGLE pojedynczy bufor koloru, GLUT_DOUBLE podwójny bufor koloru GLUT_STEREO tryb stereoskopowy Czyszczenie bufora koloru glclearcolor( )

4 Kolor Kolor w OpenGL może być określany za pomocą 3 lub 4 wartości 3 wartości to kolory R G B (czerwony, zielony, niebieski) 4 wartością to składowa alfa Kolory podawane są w wartościach 0-1

5 Funkcje ustawiające kolor trzyargumentowe void glcolor3b (GLbyte red, GLbyte green, GLbyte blue) void glcolor3d (GLdouble red, GLdouble green, GLdouble blue) void glcolor3f (GLfloat red, GLfloat green, GLfloat blue) void glcolor3i (GLint red, GLint green, GLint blue) void glcolor3s (GLshort red, GLshort green, GLshort blue) void glcolor3ub (GLubyte red, GLubyte green, GLubyte blue) void glcolor3ui (GLuint red, GLuint green, GLuint blue) void glcolor3us (GLushort red, GLushort green, GLushort blue) void glcolor3bv(const GLbyte *v) void glcolor3dv(const GLdouble *v) void glcolor3fv(const GLfloat *v) void glcolor3iv(const GLint *v) void glcolor3sv(const GLshort *v) void glcolor3ubv(const GLubyte *v) void glcolor3uiv(const GLuint *v) void glcolor3usv(const GLushort *v)

6 Funkcje ustawiające kolor czteroargumentowe void glcolor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) void glcolor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) void glcolor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) void glcolor4i (GLint red, GLint green, GLint blue, GLint alpha) void glcolor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha) void glcolor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) void glcolor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha) void glcolor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha) void glcolor4bv(const GLbyte *v) void glcolor4dv(const GLdouble *v) void glcolor4fv(const GLfloat *v) void glcolor4iv(const GLint *v) void glcolor4sv(const GLshort *v) void glcolor4ubv(const GLubyte *v) void glcolor4uiv(const GLuint *v) void glcolor4usv(const GLushort *v)

7 Kolory tryb indeksowy W trybie indeksowym kolor określany jest pojedyncza liczba indeksem do mapy (tablicy) kolorów, która zawiera informacje o składowych RGB. Typowo wielkość mapy kolorów wynosi od 256 (2 8 ) do (2 12 ). Biblioteka OpenGL nie posiada żadnych mechanizmów pozwalających na zmianę zawartości mapy kolorów void glindexd (GLdouble c) void glindexf (GLfloat c) void glindexi (GLint c) void glindexs (GLshort c) void glindexdv (const GLdouble *c) void glindexfv (const GLfloat *c) void glindexiv (const GLint *c) void glindexsv (const GLshort *c)

8 Cieniowanie Cieniowaniem nazywamy metodę ustalania koloru poszczególnych pikseli wielokąta. Dwa modele cieniowania: cieniowanie płaskie oraz cieniowanie gładkie. W cieniowaniu płaskim wielokąt otrzymuje jeden kolor - określony dla ostatniego wierzchołka (wyjątek stanowi prymityw GL_POLYGON, o kolorze którego decyduje kolor określony dla pierwszego wierzchołka). Cieniowanie gładkie wykorzystuje algorytm Gourauda Wybór cieniowania: void glshademodel (GLenum mode) GL_FLAT - cieniowanie płaskie, GL_SMOOTH - cieniowanie gładkie.

9 Dithering Kiedy w systemie dostępna jest niewielka liczba kolorów, OpenGL może symulować kolory za pomocą ditheringu. Algorytm polega na umieszczaniu kolorowych pikseli tak aby sprawiały wrażenie jednolitej barwy Włączenie: glenable(gl_dither); Wyłączenie: gldisable(gl_dither);

10 Przykład #include <GL/glut.h> GLenum shading_model = GL_SMOOTH; bool dithering = true; GLfloat red = 1.0, green = 1.0, blue = 1.0; int main (int argc, char *argv[]) glutinit (&argc,argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB); glutinitwindowsize (500,500); glutcreatewindow ("Trojkat"); glutdisplayfunc (Display); glutreshapefunc (Reshape); glutkeyboardfunc (Keyboard); glutmainloop (); return 0;

11 Przykład cd. void Reshape (int width, int height) glviewport (0,0,width,height); glmatrixmode (GL_PROJECTION); glloadidentity (); gluortho2d (0,1,0,1); Display (); void Keyboard (unsigned char key, int x, int y) if (key == 'R' && red < 1.0) red += 0.05; if (key == 'r' && red > 0.0) red -= 0.05; if (key == 'B' && blue < 1.0) blue += 0.05; if (key == 'b' && blue > 0.0) blue -= 0.05; if (key=='f') shading_model = GL_FLAT; if (key=='s') shading_model = GL_SMOOTH; if (key=='d') dithering =!dithering; Display (); if (key == 'G' && green < 1.0) green += 0.05; if (key == 'g' && green > 0.0) green -= 0.05;

12 void Display () glclearcolor (1.0,1.0,1.0,1.0); glclear (GL_COLOR_BUFFER_BIT); glmatrixmode (GL_MODELVIEW); glloadidentity (); if (dithering == true) glenable (GL_DITHER); glshademodel (shading_model); glbegin (GL_TRIANGLES); glcolor3f (red,0.0,0.0); glvertex2f (0.1,0.1); glcolor3f (0.0,green,0.0); glvertex2f (0.9,0.3); glcolor3f (0.0,0.0,blue); glvertex2f (0.3,0.9); glend (); gldisable (GL_DITHER); glflush (); glutswapbuffers ();

13 Mapy bitowe OpenGL posiada także wsparcie do klasycznej grafiki rastrowej. Mapy bitowe to prostokątne tablice liczb. Dane tablicy zawierającej mapą bitową przyjmują tylko dwie wartości: 0 lub 1 Rysowane są jedynie piksele o wartości 1. Piksele o wartości 0 są pomijane i nie wpływają na zawartość bufora kolorów. Kolor określany jest funkcją glcolor

14 Ustalenie położenia mapy bitowej Pozycja rastra (mapy bitowej) określają funkcje grupy glrasterpos : void glrasterpos2d( GLdouble x, GLdouble y ) void glrasterpos2f( GLfloat x, GLfloat y ) void glrasterpos2i( GLint x, GLint y ) void glrasterpos2s( GLshort x, GLshort y ) void glrasterpos2dv( const GLdouble * v ) void glrasterpos2fv( const GLfloat * v ) void glrasterpos2iv( const GLint * v ) void glrasterpos2sv( const GLshort * v ) Wersje 3d void glrasterpos3d( GLdouble x, GLdouble y, GLdouble z ) void glrasterpos3f( GLfloat x, GLfloat y, GLfloat z ) void glrasterpos3i( GLint x, GLint y, GLint z ) void glrasterpos3s( GLshort x, GLshort y, GLshort z ) void glrasterpos3dv( const GLdouble * v ) void glrasterpos3fv( const GLfloat * v ) void glrasterpos3iv( const GLint * v ) void glrasterpos3sv( const GLshort * v )

15 Rysowanie mapy bitowej Rysowanie mapy bitowej w określonej pozycji wykonuje funckja: void glbitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap ) Gdzie: width - szerokość mapy bitowej w pikselach, height - wysokość mapy bitowej w pikselach, xorig, yorig - współrzędne początku układu współrzędnych mapy bitowej liczone względem jej lewego dolnego wierzchołka, xmove, ymove - współrzędne wektora przesunięcia pozycji rastra wykonywanego po narysowaniu mapy bitowej, bitmap - wskaźnik do danych bitmapy.

16 Parametry mapy bitowej Mapa bitowa jest zapisana odwrotnie (od dolnego do górnego wiersza). Funkcja do ustalenia parametrów zapisu (PACK) lub odczytu (UNPACK) mapy bitowej void glpixelstoref( GLenum pname, GLfloat param ) void glpixelstorei( GLenum pname, GLint param ) pname nazwa parametru, który ma zostać zmodyfikowany, param wartość nowego parametru

17 Parametry mapy bitowej

18 Parametry zapisu mapy bitowej GL_PACK_SWAP_BYTES kolejność zapisanych bajtów GL_FALSE normalny odczyt bajtów b0b1b2b3 GL_TRUE odwrócenie bajtów b3b2b1b0 GL_PACK_LSB_FIRST kolejność zapisu bitów w bajcie danych GL_TRUE - bity uporządkowane są od najmniej do najbardziej znaczącego GL_FALSE bity od najbardziej znaczącego do najmniej znaczącego GL_PACK_ROW_LENGTH - określenie szerokości zapisywanej mapy bitowej, gdy jest ona węższa niż cała mapa bitowa (rys) 0 mapa bitowa ma wartość width z funkcji glbitmap GL_PACK_SKIP_PIXELS określenie liczbę początkowych pikseli w wierszu pomijanych podczas zapisu mapy bitowej (rys) GL_PACK_SKIP_ROWS określa liczbę (dolnych) wierszy pomijanych podczas zapisu mapy bitowej (rys) GL_PACK_ALIGNMENT - wielokrotność (w bajtach) długości pojedynczego wiersza danych zapisywanych do pamięci; domyślnie 4 bajty, pozostałe dopuszczalne wartości to1, 2 i 8

19 Parametry odczytu mapy bitowej GL_UNPACK_SWAP_BYTES kolejność odczytu bajtów GL_FALSE normalny odczyt bajtów b0b1b2b3 GL_TRUE odwrócenie bajtów b3b2b1b0 GL_UNPACK_LSB_FIRST kolejność odczytu bitów w bajcie danych GL_TRUE - bity uporządkowane są od najmniej do najbardziej znaczącego GL_FALSE bity od najbardziej znaczącego do najmniej znaczącego GL_UNPACK_ROW_LENGTH - określenie szerokości odczytywanej mapy bitowej, gdy jest ona węższa niż cała mapa bitowa (rys) 0 mapa bitowa ma wartość width z funkcji glbitmap GL_UNPACK_SKIP_PIXELS określenie liczbę początkowych pikseli w wierszu pomijanych podczas odczytu mapy bitowej (rys) GL_UNPACK_SKIP_ROWS określa liczbę (dolnych) wierszy pomijanych podczas odczytu mapy bitowej (rys) GL_UNPACK_ALIGNMENT - wielokrotność (w bajtach) długości pojedynczego wiersza danych odczytywanych z pamięci; domyślnie 4 bajty, pozostałe dopuszczalne wartości to1, 2 i 8

20 Przykład #include <vector> #include <GL/glut.h> // współrzędne pozycji rastra map bitowych std::vector < GLint > raster_x; std::vector < GLint > raster_y; // mapa bitowa - litera F GLubyte letterf[ ] = 0xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xFC, 0x00, // xFC, 0x00, // xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xC0, 0x00, // xFF, 0xFF, // xFF, 0xFF // ; int main( int argc, char * argv[] ) glutinit( & argc, argv ); glutinitdisplaymode( GLUT_DOUBLE GLUT_RGB ); glutinitwindowsize( 500, 500 ); glutcreatewindow( "Mapy bitowe" ); glutdisplayfunc( Display ); glutreshapefunc( Reshape ); glutmousefunc( MouseButton ); glutmainloop(); return 0;

21 void Display() glclearcolor( 1.0, 1.0, 1.0, 1.0 ); glclear( GL_COLOR_BUFFER_BIT ); glmatrixmode( GL_MODELVIEW ); glloadidentity(); glcolor3f( 0.0, 1.0, 0.0 ); glrectf( 100, 100, glutget( GLUT_WINDOW_WIDTH ) - 100, glutget( GLUT_WINDOW_HEIGHT ) ); void Reshape( int width, int height ) glviewport( 0, 0, width, height ); glmatrixmode( GL_PROJECTION ); glloadidentity(); gluortho2d( 0, width, 0, height ); Display(); glcolor3f( 1.0, 0.0, 0.0 ); glpixelstorei( GL_UNPACK_ALIGNMENT, 2 ); for( unsigned int i = 0; i < raster_x.size(); i++ ) glrasterpos2i( raster_x[ i ], raster_y[ i ] ); glbitmap( 8, 16, 0, 0, 0, 0, letterf ); glflush(); glutswapbuffers(); void MouseButton( int button, int state, int x, int y ) if( button == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) raster_x.insert( raster_x.end(), x ); raster_y.insert( raster_y.end(), glutget( GLUT_WINDOW_HEIGHT ) - y ); Display();

22 Wersja OpenGL Funkcje do sprawdzenia wersji OpenGL const GLubyte *glgetstring (GLenum name) GL_VENDOR - autor implementacji OpenGL, GL_RENDERER - nazwa urządzenia renderującego, np. karty graficznej, GL_VERSION - numer wersji implementacji OpenGL w formacie: wersja.podwersja lub wersja.podwersja.wydanie oraz opcjonalnie po pojedynczej spacji producent biblioteki, GL_EXTENSIONS - wykaz obsługiwanych rozszerzeń OpenGL. Nazwy obsługiwanych rozszerzeń biblioteki OpenGL oddzielone są pojedyncza spacja.

23 Wersja biblioteki GLU const GLubyte *glugetstring (GLenum name) Parametr name przyjmuje jedna z dwóch wartości: GLU_VERSION i GLU_EXTENSIONS

24 Wyświetlenie tekstu w OpenGL Wyświetlanie ciągów znaków umożliwia funkcja void glutbitmapcharacter (void *font, int character) parametr font określa rodzaj wyświetlanej czcionki bitmapowej, a character znak jaki ma zostać wyświetlony Czcionki bitmapowe są na stałe zapisane w bibliotece. GLUT jako mapy bitowe. Są one kodowane w ISO , czyli bez polskich liter.

25 Czcionki bitmapowe GLUT_BITMAP_8_BY_13 - typowa czcionka o wymiarach znaków 8 13 pikseli; znaki ASCII z przedziału [0, 255]; GLUT_BITMAP_9_BY_15 - typowa czcionka o wymiarach znaków 9 15 pikseli; GLUT_BITMAP_TIMES_ROMAN_10-10-punktowa czcionka proporcjonalna Times Roman; znaki ASCII z przedziałów: [32, 126] i [160, 255]; GLUT_BITMAP_TIMES_ROMAN_24-24-punktowa czcionka proporcjonalna Times Roman; znaki ASCII z przedziałów: [32, 126] i [160, 255]; GLUT_BITMAP_HELVETICA_10-10-punktowa czcionka proporcjonalna Helvetica; znaki ASCII z przedziałów: [32, 126] i [160, 255]; GLUT_BITMAP_HELVETICA_12-12-punktowa czcionka proporcjonalna Helvetica; znaki ASCII z przedziałów: [32, 126] i [160, 255]; GLUT BITMAP HELVETICA punktowa czcionka proporcjonalna Helvetica; znaki ASCII z przedziałów: [32, 126] i [160, 255];

26 Pisanie tekstu na ekranie Funkcja określająca położenie wyświetlanej grafiki rastrowej (w tym przypadku litery) void glrasterpos2i (GLint x, GLint y) void glrasterpos2f (GLfloat x, GLfloat y) Polecenia wyświetlające pojedynczą literę w punkcie x, y (z=0) glrasterpos2f (x,y); glutbitmapcharacter(glut_bitmap_helvetica_10, 'x'); Wersja z 3 wymiarami: void glrasterpos3i (GLint x, GLint y, GLint z) void glrasterpos3f (GLfloat x, GLfloat y, GLfloat z)

27 Przykład Funkcja wyświetlająca tekst w punkcie x,y (tablicę znaków zakończoną 0) void DrawString (int x, int y, char *string) glrasterpos2f (x,y); int len = strlen (string); for (int i = 0; i < len; i++) glutbitmapcharacter(glut_bitmap_helvetica_10, string [i]);

28 #include <GL/glut.h> #include <stdlib.h> #include <string.h> int main (int argc, char *argv[]) glutinit (&argc,argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB); glutinitwindowsize (600,600); glutcreatewindow ("Wersja OpenGL"); glutdisplayfunc (Display); glutreshapefunc (Reshape); glutmainloop (); return 0;

29 void Reshape (int width, int height) glviewport (0,0,width,height); glmatrixmode (GL_PROJECTION); glloadidentity (); gluortho2d (0,width-1,0,height-1); Display (); void Display () glclearcolor (1.0,1.0,1.0,1.0); glclear (GL_COLOR_BUFFER_BIT); glcolor3f (0.0,0.0,0.0); char string [2048]; strcpy (string,"gl_renderer: "); strcat (string,(char*)glgetstring (GL_RENDERER)); DrawString (0,height,string); height -= 16; strcpy (string,"gl_version: "); strcat (string,(char*)glgetstring (GL_VERSION)); DrawString (0,height,string); height -= 16; strcpy (string,"glu_version: "); strcat (string,(char*)glugetstring (GLU_VERSION)); DrawString (0,height,string); height -= 16; GLuint height = glutget (GLUT_WINDOW_HEIGHT) - 15; GLuint width = glutget (GLUT_WINDOW_WIDTH); strcpy (string,"gl_vendor: "); strcat (string,(char*)glgetstring (GL_VENDOR)); DrawString (0,height,string); height -= 16; glflush (); glutswapbuffers();

30 Bufor głębokości Bufor głębokości to obok bufora koloru podstawowy element bufora ramki czyli pamięci obrazu. Bufor głębokości, nazywany także z-buforem lub buforem głębi, uczestniczy w procesie usuwania niewidocznych elementów renderowanej sceny. Działanie bufora głębokości polega w uproszczeniu na przechowywaniu wartości współrzędnej z (głębokości) dla każdego piksela obrazu. Przy rysowaniu kolejnych pikseli danego obiektu obliczana jest wartość współrzędnej z i porównywana z wartością znajdująca się w buforze. Jeżeli porównanie wskazuje, ze rysowany piksel przesłania to, co zostało narysowane wcześniej, zmieniana jest zarówno zawartość bufora głębokości jak i bufora koloru.

31 Ustawienie bufora głębokości Korzystając z biblioteki GLUT, niezbędne jest dodanie stałej GLUT_DEPTH do wywołania funkcji glutinitdisplaymode Włączenie testowania głębokości wykonuje się poleceniem: glenable(gl_depth_test) Wyłączenie zapisywania wartości współrzędnych do bufora głębokości realizuje funkcja: void gldepthmask (GLboolean flag) Przyjmująca wartości GL_TRUE lub GL_FALSE

32 Testy bufora głębokości Biblioteka OpenGL umożliwia wybór rodzaju testu wykonywanego przy użyciu danych zawartych w buforze głębokości. Umożliwia to funkcja: void gldepthfunc (GLenum func) GL_NEVER - wartość testu zawsze negatywna, GL_LESS - wartość testu pozytywna jeżeli testowana wartość współrzędnej z jest mniejsza od wartości znajdującej się w buforze; wartość domyślna, GL_EQUAL - wartość testu pozytywna jeżeli testowana wartość współrzędnej z jest równa wartości znajdującej się w buforze, GL_LEQUAL - wartość testu pozytywna jeżeli testowana wartość współrzędnej z jest mniejsza lub równa wartości znajdującej się w buforze, GL_GREATER - wartość testu pozytywna jeżeli testowana wartość współrzędnej z jest większa od wartości znajdującej się w buforze, GL_NOTEQUAL - wartość testu pozytywna jeżeli testowana wartość współrzędnej z jest różna od wartości znajdującej się w buforze, GL_GEQUAL - wartość testu pozytywna jeżeli testowana wartość współrzędnej z jest większa lub równa wartości znajdującej się w buforze, GL_ALWAYS - wartość testu zawsze pozytywna.

33 Czyszczenie bufora głębokości Przez rozpoczęciem rysowania elementów sceny 3D konieczne jest wyczyszczenie zawartości bufora głębokości. Wymaga to dodania stałej GL_DEPTH_BUFFER_BIT przy wywołaniu funkcji glclear glclear(gl_depth_buffer_bit); Standardowo bufor głębokości zawiera liczby z przedziału [0,1] i jest czyszczony liczba 1. Można to zmienić wywołując funkcję void glcleardepth (GLclampd depth) depth jest liczba z przedziału [0, 1]

34 Zakres wartości bufora głębokości Bufor głębokości zawiera standardowo liczby z przedziału [0, 1]. Możliwa jest zmiana tego przedziału poprzez użycie funkcji: void gldepthrange (GLclampd znear, GLclampd zfar) Parametr znear określa minimalna wartość w buforze głębokości, a zfar maksymalna wartość w buforze głębokości. Wartości domyślne wynoszą oczywiście 0 i 1.

35 Przykład #include <GL/glut.h> const GLdouble left = -2.0; const GLdouble right = 2.0; const GLdouble bottom = -2.0; const GLdouble top = 2.0; const GLdouble near_ = 3.0; const GLdouble far_ = 7.0; void Reshape (int width, int height) glviewport (0,0,width,height); glmatrixmode (GL_PROJECTION); glloadidentity (); glfrustum (left,right,bottom,top,near_,far_); Display (); GLfloat rotatex = 0.0; GLfloat rotatey = 0.0; GLenum depth_test = GL_LESS; int main (int argc, char *argv[]) glutinit (&argc,argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB GLUT_DEPTH); glutinitwindowsize (500,500); glutcreatewindow ("Szescian 5"); glutdisplayfunc (Display); glutreshapefunc (Reshape); glutspecialfunc (SpecialKeys); glutkeyboardfunc (Keyboard); glutmainloop (); return 0;

36 void SpecialKeys (int key, int x, int y) switch (key) case GLUT_KEY_LEFT: rotatey -= 3; break; case GLUT_KEY_UP: rotatex -= 3; break; case GLUT_KEY_RIGHT: rotatey += 3; break; case GLUT_KEY_DOWN: rotatex += 3; break; Reshape (glutget (GLUT_WINDOW_WIDTH),glutGet (GLUT_WINDOW_HEIGHT)); void Keyboard (unsigned char key, int x, int y) if (key=='1') depth_test = GL_NEVER; if (key=='2') depth_test = GL_LESS; if (key=='3') depth_test = GL_EQUAL; if (key=='4') depth_test = GL_LEQUAL; if (key=='5') depth_test = GL_GREATER; if (key=='6') depth_test = GL_NOTEQUAL; if (key=='7') depth_test = GL_GEQUAL; if (key=='8') depth_test = GL_ALWAYS; Display ();

37 void Display () glclearcolor (1.0,1.0,1.0,1.0); glclear (GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT); glmatrixmode (GL_MODELVIEW); glloadidentity (); glcolor3f (0,0,0); glvertex3f (-1.0,-1.0,-1.0); glcolor3f (0,0,1); glvertex3f (-1.0,1.0,-1.0); glcolor3f (0,1,1); glvertex3f (1.0,1.0,-1.0); gltranslatef (0,0,-(near_+far_)/2); glrotatef (rotatex,1.0,0,0); glrotatef (rotatey,0,1.0,0); glscalef (1.15,1.15,1.15); glenable (GL_DEPTH_TEST); gldepthfunc (depth_test); glcolor3f (0,1,0); glvertex3f (1.0,-1.0,-1.0); glcolor3f (0,0,0); glvertex3f (-1.0,-1.0,-1.0); glcolor3f (0,1,1); glvertex3f (1.0,1.0,-1.0); glend (); glbegin (GL_TRIANGLES); glcolor3f (1,0,0); glvertex3f (-1.0,-1.0,1.0); glcolor3f (1,1,0); glvertex3f (1.0,-1.0,1.0); glcolor3f (1,1,1); glvertex3f (1.0,1.0,1.0); ( ) glflush (); glutswapbuffers();

38 Przesunięcie wartości głębi Mechanizm pozwalający na przesuwanie wartości głębi pikseli przy rysowaniu wielokątów umożliwia funkcja void glpolygonoffset (GLfloat factor, GLfloat units) Gdzie factor i units domyślnie ustawione są na 0. Włącznie mechanizmu przesuwania wartości głębi włącza się poleceniem glenable( ) przekazując jeden z parametrów: GL_POLYGON_OFFSET_POINT - przesuwanie wartości głębi, gdy rysowane są tylko wierzchołki wielokątów, GL_POLYGON_OFFSET_LINE - przesuwanie wartości głębi, gdy rysowane są tylko krawędzie wielokątów, GL_POLYGON_OFFSET_FILL - przesuwanie wartości głębi, gdy rysowane są wypełnione wielokąty.

39 Przykład glcolor3f(1,0,0); glutsolidsphere(1,10,10); glcolor3f(0,0,0); glutwiresphere(1,10,10); glpolygonoffset(1,1); glenable(gl_polygon_offset_fill); glcolor3f(1,0,0); glutsolidsphere(1,10,10); glcolor3f(0,0,0); glutwiresphere(1,10,10);

40 Figury 3d wypełnione z biblioteki GLUT Kula void glutsolidsphere (GLdouble radius, GLint slices, GLint stacks) radius - promien kuli, slices - ilosc południków, stacks - ilosc równolezników. Sześcian void glutsolidcube (GLdouble size) size długość boku

41 Gotowe obiekty 3D z biblioteki GLUT cd Stożek void glutsolidcone (GLdouble base, GLdouble height, GLint slices, GLint stacks) base - promien podstawy stozka, height - wysokosc stozka, slices - ilosc tworzacych, stacks - ilosc południków Torus void glutsolidtorus (GLdouble innerradius, GLdouble outerradius, GLint sides, GLint rings) innerradius - promien koła tworzacego torus, outerradius - promien torusa, sides - ilosc scian bocznych, z których składa sie pojedynczy walec, rings - ilosc walców, z których składa sie torus

42 Gotowe obiekty 3D z biblioteki GLUT cd. Dwunastościan void glutsoliddodecahedron (void) Czajnik void glutsolidteapot (GLdouble size) size wielkość Ośmiościan void glutsolidoctahedron (void) Czworościan void glutsolidtetrahedron (void) Dwudziestoscian void glutsolidicosahedron (void)

43 Wybór, który z buforów składających się na bufor koloru wykorzystywany jest do renderingu umożliwia funkcja gldrawbuffer( ) Przekazywanymi argumentami mogą być GL_BACK, GL_FRONT, GL_NONE

44 Przykład glpolygonoffset(1,1); glenable(gl_polygon_offset_fill); glpushmatrix(); glrotatef(angle, 0, 1, 0); glcolor3f(1,0,0); glutsolidsphere(0.8, 10, 10); glcolor3f(0,0,0); glutwiresphere(0.8, 10, 10); glpopmatrix(); gldrawbuffer( GL_NONE ); glcolor3f (1.0,1.0,0.0); glbegin(gl_quads); glvertex3f(-0.6, -0.6, 1.01); glvertex3f( 0.6, -0.6, 1.01); glvertex3f( 0.6, 0.6, 1.01); glvertex3f(-0.6, 0.6, 1.01); glend(); gldrawbuffer( GL_BACK ); glcolor3f (1.0,1.0,1.0); glutsolidcube(2); glcolor3f (0.0,0.0,0.0); glutwirecube(2);

45 Listy wyświetlania Zasada działania list wyświetlania sprowadza się do grupowania (zwanego czasami niesłusznie kompilowaniem ) poleceń biblioteki OpenGL. Tak utworzona grupa poleceń identyfikowana jest identyfikatorem w postaci liczby całkowitej. Identyfikator ten umożliwia późniejsze wywołanie wybranej listy wyświetlania, czyli wykonanie poleceń biblioteki OpenGL w niej zapamiętanych. Może się przyczynić do zwiększenia szybkości wyświetlania grafiki.

46 Tworzenie listy wyświetlania Generowanie nowej listy wyświetlania rozpoczyna się poprzez wywołanie funkcji: void glnewlist (GLuint list, GLenum mode) list określa unikatowy identyfikator listy wyświetlania (musi to byc liczba wieksza od 0), mode definiuje tryb tworzenia listy wyświetlania GL_COMPILE - lista generowana w trybie zachowanym (ang. retained mode); polecenia umieszczane są na liście ale nie są wykonywane, GL_COMPILE_AND_EXECUTE - lista generowana w trybie bezpośrednim (ang. immediate mode); polecenia umieszczane są na liście i jednocześnie natychmiast wykonywane. Zakończenie tworzenia listy wyświetlania void glendlist ()

47 Generowanie numerów list Serie identyfikatorów do pustych list wyświetlania generuje funkcja: GLuint glgenlists (GLsizei range) zwraca numer identyfikatora pierwszej utworzonej listy wyświetlania. Następne utworzone listy maja identyfikatory o kolejnych wartościach aż do range-1

48 Listy wyświetlania void gldeletelists (GLuint list, GLsizei range) list - identyfikator pierwszej usuwanej listy range - ilość kolejnych list do usunięcia. Wywołanie poleceń listy wyświetlania void glcalllist (GLuint list) Wywołanie kolejno większej liczby listy wyświetlania void glcalllists (GLsizei n, GLenum type, const GLvoid *lists) n - określa liczbę elementów tablicy type - rodzaj elementów tablicy określa parametr,

49 Przykład #include <stdlib.h> #include <time.h> #include "glut.h" #include "colors.h" const GLdouble left = -2.0; const GLdouble right = 2.0; const GLdouble bottom = -2.0; const GLdouble top = 2.0; const GLdouble near = 3.0; const GLdouble far = 9.0; GLfloat rotatex = 0.0; GLfloat rotatey = 0.0; int drzewolist; int laslist; void Tree() glpolygonoffset(1,1); glenable(gl_polygon_offset_fill); glpushmatrix(); glscalef(0.5,0.5,0.5); glpushmatrix(); gltranslatef(0,0.3,0); glrotatef(-90,1,0,0); glcolor3f(0,1,0); glutsolidcone(0.5,1,10,10); glcolor3f(0,0,0); glutwirecone(0.5,1,10,10); glpopmatrix(); glpushmatrix(); glscalef(1,3,1); glcolor3f(1,0,0); glutsolidcube(0.2); glcolor3f(0,0,0); glutwirecube(0.2); glpopmatrix(); glpopmatrix();

50 void GenerateListDrzewo() drzewolist = glgenlists(1); glnewlist(drzewolist, GL_COMPILE); Tree(); glendlist(); void GenerateListLas() laslist = glgenlists(1); glnewlist(laslist, GL_COMPILE); srand(time(0)); for (int i=0; i<20; i++) float x = rand()/(float)rand_max * 4-2; float z = rand()/(float)rand_max * 4-2; glpushmatrix(); gltranslatef(x,0,z); Tree(); glpopmatrix(); glendlist();

51 void Display () glenable(gl_depth_test); glclearcolor (0.0,0.0,0.0,0.0); glclear (GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT); glmatrixmode (GL_MODELVIEW); glloadidentity (); gltranslatef (0,0,-(near+far)/2); void Reshape (int width, int height) glviewport (0,0,width,height); glmatrixmode (GL_PROJECTION); glloadidentity (); glfrustum (left,right,bottom,top,near,far); Display (); glrotatef (rotatex,1.0,0,0); glrotatef (rotatey,0,1.0,0); glcalllist(laslist); glflush (); glutswapbuffers();

52 void SpecialKeys (int key, int x, int y) switch (key) case GLUT_KEY_LEFT: case GLUT_KEY_UP: case GLUT_KEY_RIGHT: rotatey += 2; break; case GLUT_KEY_DOWN: rotatey -= 2; break; rotatex -= 2; break; rotatex += 2; break; int main (int argc, char *argv[]) glutinit (&argc,argv); glutinitdisplaymode (GLUT_DOUBLE GLUT_RGB GLUT_DEPTH); glutinitwindowsize (500,500); glutcreatewindow ("Z-bufor"); glutdisplayfunc (Display); glutreshapefunc (Reshape); glutspecialfunc (SpecialKeys); glutmainloop (); return 0; GenerateListLas(); Reshape (glutget (GLUT_WINDOW_WIDTH),glutGet (GLUT_WINDOW_HEIGHT));

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

Prosty program- cpp. #include <GL/glut.h> Wizualizacje 3D Prosty program- cpp #include #include #include int main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode( GLUT_DOUBLE GLUT_RGBA ); glutinitwindowsize(400,

Bardziej szczegółowo

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL Dorota Smorawa Pierwszy program Pierwszy program będzie składał się z trzech etapów: Funkcji rysującej scenę 3D, Inicjacji okna renderingu,

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie http://galaxy.agh.edu.pl/~mhojny Prowadzący: dr inż. Hojny Marcin Akademia Górniczo-Hutnicza Mickiewicza 30 30-059 Krakow pawilon B5/p.406 tel. (+48)12 617 46

Bardziej szczegółowo

Janusz Ganczarski. OpenGL Pierwszy program

Janusz Ganczarski. OpenGL Pierwszy program Janusz Ganczarski OpenGL Pierwszy program Spis treści Spis treści..................................... 1 1. Pierwszy program.............................. 1 1.1. Rysowanie sceny 3D...........................

Bardziej szczegółowo

Temat: Wprowadzenie do OpenGL i GLUT

Temat: Wprowadzenie do OpenGL i GLUT Instrukcja laboratoryjna 8 Grafika komputerowa 3D Temat: Wprowadzenie do OpenGL i GLUT Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny OpenGL

Bardziej szczegółowo

Grafika 3D OpenGL część II

Grafika 3D OpenGL część II #include #include #include float kat=0.0f; void renderujscene(void) { glclearcolor(1.0f,1.0f,1.0f,1.0f); glclear(gl_color_buffer_bit); glpushmatrix(); glrotatef(kat,0,0,1);

Bardziej szczegółowo

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

Janusz Ganczarski. OpenGL Definiowanie sceny 3D Janusz Ganczarski OpenGL Definiowanie sceny 3D Spis treści Spis treści..................................... 1 1. Definiowanie sceny 3D........................... 1 1.1. Obszar renderingu............................

Bardziej szczegółowo

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

Elementarne obiekty geometryczne, bufory. Dorota Smorawa Elementarne obiekty geometryczne, bufory Dorota Smorawa Elementarne obiekty Tworząc scenę 3D, od najprostszej, po najbardziej skomplikowaną, używamy obiektów złożonych, przede wszystkim podstawowych, elementarnych

Bardziej szczegółowo

Temat: Transformacje 3D

Temat: Transformacje 3D Instrukcja laboratoryjna 11 Grafika komputerowa 3D Temat: Transformacje 3D Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Bardzo często programując

Bardziej szczegółowo

3 Przygotował: mgr inż. Maciej Lasota

3 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 3 1/5 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Rysowanie prymitywów 3 Przygotował: mgr inż. Maciej Lasota 1) Rysowanie prymitywów Podstawową rodziną funkcji wykorzystywanych

Bardziej szczegółowo

8 Przygotował: mgr inż. Maciej Lasota

8 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 8 1/6 Grafika Komputerowa Instrukcja laboratoryjna Temat: Listy wyświetlania i tablice wierzchołków 8 Przygotował: mgr inż. Maciej Lasota 1) Listy wyświetlania Listy wyświetlania (ang.

Bardziej szczegółowo

Rzutowanie DOROTA SMORAWA

Rzutowanie DOROTA SMORAWA Rzutowanie DOROTA SMORAWA Rzutowanie Rzutowanie jest operacja polegająca na tym, aby odpowiednie piksele na płaskim ekranie były wyświetlane w taki sposób, by sprawiać wrażenie trójwymiarowej głębi (przestrzeni

Bardziej szczegółowo

OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE

OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE SPIS TREŚCI 1. Przekształcenia geometryczne... 3 1.1. Obrót... 3 1.2. Skalowanie... 3 1.3. Przesunięcie... 3 1.4. Mnożenie macierzy... 4 1.5. Ładowanie macierzy... 4

Bardziej szczegółowo

Grafika komputerowa Wstęp do OpenGL

Grafika komputerowa Wstęp do OpenGL Instytut Informatyki Politechniki Warszawskiej Grafika komputerowa Wstęp do OpenGL Zbigniew Szymański z.szymanski@ii.pw.edu.pl listopad 2008 - v1 Prowadzący zajęcia: Sprawy organizacyjne /1/ Zbigniew Szymański

Bardziej szczegółowo

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

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++) Wizualizacja 3D glwindowpos2d Funkcja wprowadzona w wersji 1.4 biblioteki OpenGL Funkcja pozwala na ustawienie rastra względem okna, a nie względem macierzy modelu Stosowana podczas pisania tekstów, np.:

Bardziej szczegółowo

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

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz. Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych Wykład 5 Dr inż. Tomasz Olas olas@icis.pcz.pl OpenGL (Open Graphics Library) jest niskopoziomowa biblioteka graficzna (API - programowy

Bardziej szczegółowo

Grafika komputerowa Wstęp do OpenGL

Grafika komputerowa Wstęp do OpenGL Instytut Informatyki Politechniki Warszawskiej Grafika komputerowa Wstęp do OpenGL Zbigniew Szymański z.szymanski@ii.pw.edu.pl listopad 2008 - v1 listopad 2010 - v1d kwiecień 2013 v1e Prowadzący zajęcia:

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/6 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Manipulowanie przestrzenią 2 Przygotował: mgr inż. Maciej Lasota 1) Manipulowanie przestrzenią Istnieją dwa typy układów współrzędnych:

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6 Wykład 6 p. 1/2 Oprogramowanie i wykorzystanie stacji roboczych Wykład 6 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wektory normalne

Bardziej szczegółowo

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

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych Instrukcja laboratoryjna 9 Grafika komputerowa 3D Temat: Manipulowanie przestrzenią Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Układ

Bardziej szczegółowo

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

Zatem standardowe rysowanie prymitywów wygląda następująco: Instrukcja laboratoryjna 10 Grafika komputerowa 3D Temat: Prymitywy Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Prymitywy proste figury geometryczne,

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5 Wykład 5 p. 1/? Oprogramowanie i wykorzystanie stacji roboczych Wykład 5 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wykład 5 p. 2/? Co

Bardziej szczegółowo

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok OpenGL Open Graphics Library Jest to API pozwalające na renderowanie grafiki w czasie rzeczywistym,

Bardziej szczegółowo

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer)

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer) Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer) Autor: Radosław Płoszajczak Spis treści I. Wstęp...2 II. Metoda rysująca przeźroczystą szybę...2 III. Bufor szablonowy (stencil

Bardziej szczegółowo

Wizualizacja 3D. dr inż. Marcin Gabryel

Wizualizacja 3D. dr inż. Marcin Gabryel Wizualizacja 3D dr inż. Marcin Gabryel Modele braw CMYK (Cyan, Magenta, Yellow, black) RGB (Red, Green, Blue) HSV (Hue, Saturation, Value) RGB Model polega na sumowaniu sygnałów w poszczególnych kanałach.

Bardziej szczegółowo

6 Przygotował: mgr inż. Maciej Lasota

6 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 6 1/7 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Materiały i oświetlenie 6 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie Specyfikacja biblioteki OpenGL rozróżnia trzy

Bardziej szczegółowo

Rysowanie punktów na powierzchni graficznej

Rysowanie punktów na powierzchni graficznej Rysowanie punktów na powierzchni graficznej Tworzenie biblioteki rozpoczniemy od podstawowej funkcji graficznej gfxplot() - rysowania pojedynczego punktu na zadanych współrzędnych i o zadanym kolorze RGB.

Bardziej szczegółowo

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

Światło. W OpenGL można rozróżnić 3 rodzaje światła Wizualizacja 3D Światło W OpenGL można rozróżnić 3 rodzaje światła Światło otaczające (ambient light) równomiernie oświetla wszystkie elementy sceny, nie pochodzi z żadnego konkretnego kierunku Światło

Bardziej szczegółowo

Materiały. Dorota Smorawa

Materiały. Dorota Smorawa Materiały Dorota Smorawa Materiały Materiały, podobnie jak światła, opisywane są za pomocą trzech składowych. Opisują zdolności refleksyjno-emisyjne danej powierzchni. Do tworzenia materiału służy funkcja:

Bardziej szczegółowo

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using

Bardziej szczegółowo

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

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL. Laboratorium 1 Część I Podstawy biblioteki graficznej OpenGL. I. Konfiguracja środowiska 1. Ściągamy bibliotekę freeglut i rozpakujemy do głównego folderu dysku systemowego np. C:\freeglut 2. Uruchamiamy

Bardziej szczegółowo

Programowanie OpenGL

Programowanie OpenGL Programowanie OpenGL Uniwersytet Marii Curie-Skłodowskiej Wydział Matematyki, Fizyki i Informatyki Instytut Informatyki Programowanie OpenGL Rafał Stęgierski Lublin 2011 Instytut Informatyki UMCS Lublin

Bardziej szczegółowo

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Laboratorium grafiki komputerowej i animacji Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Przygotowanie do ćwiczenia: 1. Zapoznać się ze zdefiniowanymi w OpenGL modelami światła i właściwości materiałów.

Bardziej szczegółowo

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

Studium podyplomowe. Programowanie w OpenGL. Michał Turek, AGH Kraków Studium podyplomowe Programowanie w OpenGL Michał Turek, AGH Kraków Charakterystyka (I) OpenGL - (Open Graphics Library) Graficzna biblioteka 2D/3D Liczne porty biblioteki, w tym takŝe akcelerowane sprzętowo

Bardziej szczegółowo

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie VI. Biblioteka OpenGL - teksturowanie

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie VI. Biblioteka OpenGL - teksturowanie Laboratorium Grafiki Komputerowej i Animacji Ćwiczenie VI Biblioteka OpenGL - teksturowanie Sławomir Samolej Rzeszów, 1999 1. Wstęp Podczas tworzenia skomplikowanych obiektów graficznych przydatnym mechanizmem

Bardziej szczegółowo

OpenGL teksturowanie

OpenGL teksturowanie OpenGL teksturowanie Teksturowanie polega na pokrywaniu wielokątów obrazami (plikami graficznymi) Umożliwia znaczące zwiększenie realizmu sceny przy niewielkim zwiększeniu nakładu obliczeniowego Rozwój

Bardziej szczegółowo

Programowanie OpenGL

Programowanie OpenGL Programowanie OpenGL Uniwersytet Marii Curie-Skłodowskiej Wydział Matematyki, Fizyki i Informatyki Instytut Informatyki Programowanie OpenGL Rafał Stęgierski Lublin 2011 Instytut Informatyki UMCS Lublin

Bardziej szczegółowo

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone. Oświetlenie w OpenGL Oprogramowanie i wykorzystanie stacji roboczych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl W OpenGL źródło światła w scenie składa się z trzech składowych oświetlenia: otoczenia,

Bardziej szczegółowo

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej* Specyfikacja OpenGL Podstawy programowania grafiki komputerowej* Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej

Bardziej szczegółowo

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

OpenGL - maszyna stanu. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 7. Grupy atrybutów. Zmienne stanu. OpenGL - maszyna stanu Oprogramowanie i wykorzystanie stacji roboczych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenGL posiada

Bardziej szczegółowo

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup Baltie 3 Podręcznik do nauki programowania dla klas I III gimnazjum Tadeusz Sołtys, Bohumír Soukup Czytanie klawisza lub przycisku myszy Czytaj klawisz lub przycisk myszy - czekaj na naciśnięcie Polecenie

Bardziej szczegółowo

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty. Przyszedł czas na rysowanie własnych figur, czyli prymitywy, obracanie bitmap, oraz alpha blending-czyli półprzezroczystość. Będę opisywał tylko rzeczy nowe-nie ma potrzeby abym się powtarzał. Zaczynajmny

Bardziej szczegółowo

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej GRAFIKA RASTROWA WYKŁAD 1 Wprowadzenie do grafiki rastrowej Jacek Wiślicki Katedra Informatyki Stosowanej Grafika rastrowa i wektorowa W grafice dwuwymiarowej wyróżnia się dwa rodzaje obrazów: rastrowe,

Bardziej szczegółowo

OpenGL model oświetlenia

OpenGL model oświetlenia Składowe światła OpenGL Światło otaczające (ambient) OpenGL model oświetlenia Nie pochodzi z żadnego określonego kierunku. Powoduje równomierne oświetlenie obiektów na wszystkich powierzchniach i wszystkich

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów

GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów http://galaxy.agh.edu.pl/~mhojny Prowadzący: dr inż. Hojny Marcin Akademia Górniczo-Hutnicza Mickiewicza 30 30-059 Krakow pawilon B5/p.406 tel. (+48)12

Bardziej szczegółowo

Przekształcenia geometryczne. Dorota Smorawa

Przekształcenia geometryczne. Dorota Smorawa Przekształcenia geometryczne Dorota Smorawa Przekształcenia geometryczne Na poprzednich laboratoriach już dowiedzieliśmy się, na czym polegają podstawowe przekształcenia geometryczne. Trzy podstawowe przekształcenia

Bardziej szczegółowo

GRAFIKA. Rodzaje grafiki i odpowiadające im edytory

GRAFIKA. Rodzaje grafiki i odpowiadające im edytory GRAFIKA Rodzaje grafiki i odpowiadające im edytory Obraz graficzny w komputerze Może być: utworzony automatycznie przez wybrany program (np. jako wykres w arkuszu kalkulacyjnym) lub urządzenie (np. zdjęcie

Bardziej szczegółowo

Formaty obrazów rastrowych biblioteki PBM

Formaty obrazów rastrowych biblioteki PBM Formaty obrazów rastrowych biblioteki PBM Reprezentacja obrazu Obrazy pobierane z kamery, bądź dowolnego innego źródła, mogą być składowane na pliku dyskowym w jednym z wielu istniejących formatów zapisu

Bardziej szczegółowo

Mieszanie kolorów. Dorota Smorawa

Mieszanie kolorów. Dorota Smorawa Mieszanie kolorów Dorota Smorawa Tworzenie efektu przezroczystości Biblioteka OpenGL umożliwia nam tworzenie bardzo ciekawych efektów związanych z przezroczystością i odbiciem. Aby zrealizować efekt przezroczystości

Bardziej szczegółowo

OpenGL. Silicon Graphics (IRIS GL stacje graficzne)

OpenGL. Silicon Graphics (IRIS GL stacje graficzne) OpenGL. Silicon Graphics (IRIS GL stacje graficzne) Biblioteka -przestrzeń 3D -rzutowanie -prymitywy graficzne -operacje na barwach HISTORIA 1992 - powstaje wersja 1.0 specyfikacji OpenGL przenośnej między

Bardziej szczegółowo

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

Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki Strona 1 z 9 C E L Ć W I C Z E N I A Celem ćwiczenia jest zapoznanie się z podstawowymi operacjami

Bardziej szczegółowo

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

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D. System graficzny scena 3D algorytm graficzny obraz 2D Potok graficzny 3D Radosław Mantiuk Dane wejściowe Algorytm tworzący obraz wyjściowy na podstawie sceny 3D Dane wyjściowe Wydział Informatyki Zachodniopomorski

Bardziej szczegółowo

OpenGL Zaawansowana grafika komputerowa

OpenGL Zaawansowana grafika komputerowa p. 1/63 OpenGL Zaawansowana grafika komputerowa p. 2/63 Czym jest OpenGL OpenGL można zdefiniować jako "programowy interfejs sprzętu graficznego". Jest to biblioteka przeznaczona do tworzenia trójwymiarowej

Bardziej szczegółowo

Wstęp... 19 1. Podstawy... 23. 2. Pierwszy program... 29. 3. Definiowanie sceny 3D... 35. 4. Przekształcenia geometryczne... 47

Wstęp... 19 1. Podstawy... 23. 2. Pierwszy program... 29. 3. Definiowanie sceny 3D... 35. 4. Przekształcenia geometryczne... 47 Spis treści 3 Wstęp... 19 1. Podstawy... 23 1.1. Składnia...24 1.2. Typy danych...25 1.3. Układ współrzędnych...25 1.4. Barwy...26 1.5. Bufor ramki...26 1.6. Okno renderingu...26 1.7. Maszyna stanów...27

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA 10: Antyaliasing

GRAFIKA KOMPUTEROWA 10: Antyaliasing GRAFIKA KOMPUTEROWA 10: Antyaliasing http://galaxy.agh.edu.pl/~mhojny Prowadzący: dr inż. Hojny Marcin Akademia Górniczo-Hutnicza Mickiewicza 30 30-059 Krakow pawilon B5/p.406 tel. (+48)12 617 46 37 e-mail:

Bardziej szczegółowo

Szybkie tworzenie grafiki w GcIde

Szybkie tworzenie grafiki w GcIde Szybkie tworzenie grafiki w GcIde Opracował: Ryszard Olchawa Poniższy opis dotyczy aplikacji okienkowej w systemie Windows lub Linux bazującej na obiektowej bibliotece rofrm stworzonej w środowisku GcIde.

Bardziej szczegółowo

1. Prymitywy graficzne

1. Prymitywy graficzne 1. Prymitywy graficzne Prymitywy graficzne są elementarnymi obiektami jakie potrafi bezpośrednio rysować, określony system graficzny (DirectX, OpenGL itp.) są to: punkty, listy linii, serie linii, listy

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym Zadanie 1. Ściana Zadanie W pliku walls.cpp znajduje się funkcja void draw_back_wall(). Należy uzupełnić ją, ustawiając odpowiednio parametry teksturowania tak, aby na ścianę, która w pierwotnej wersji

Bardziej szczegółowo

Grafika rastrowa (bitmapa)-

Grafika rastrowa (bitmapa)- Grafika komputerowa Grafika rastrowa Grafika rastrowa (bitmapa)- sposób zapisu obrazów w postaci prostokątnej tablicy wartości, opisujących kolory poszczególnych punktów obrazu (prostokątów składowych).

Bardziej szczegółowo

Formaty plików graficznych - wprowadzenie

Formaty plików graficznych - wprowadzenie Formaty plików graficznych - wprowadzenie Obraz graficzny jest dwuwymiarową tablicą pikseli, zwana czasem rastrem. Kolor piksela może być reprezentowany w następujący sposób: Dla obrazów monochromatycznych

Bardziej szczegółowo

1. Wprowadzanie danych z klawiatury funkcja scanf

1. Wprowadzanie danych z klawiatury funkcja scanf 1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków),

Bardziej szczegółowo

Obcinanie grafiki do prostokąta

Obcinanie grafiki do prostokąta Obcinanie grafiki do prostokąta Tworząc różnego rodzaju grafikę komputerową bardzo szybko natrafisz na sytuację, gdy rysowane obiekty "wychodzą" poza obszar ekranu. W takim przypadku kontynuowanie rysowania

Bardziej szczegółowo

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

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego. GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego. http://bazyluk.net/zpsb Grafika Komputerowa, Informatyka, I Rok PROGRAMOWANIE GRAFIKI KOMPUTEROWEJ CZASU RZECZYWISTEGO Grafika

Bardziej szczegółowo

OpenGL Światło (cieniowanie)

OpenGL Światło (cieniowanie) OpenGL Światło (cieniowanie) 1. Oświetlenie włączanie/wyłączanie glenable(gl_lighting); - włączenie mechanizmu oświetlenia gldisable(gl_lighting); - wyłączenie mechanizmu oświetlenia glenable(gl_light0);

Bardziej szczegółowo

dr inż. Jacek Dąbrowski, KSG

dr inż. Jacek Dąbrowski, KSG dr inż. Jacek Dąbrowski, KSG jacek.dabrowski@eti.pg.gda.pl Technologie PHIGS, Iris GL OpenGL, DirectX, OpenGL OpenGL OpenGL ES WebGL OpenCL OGL 1.0: 1992 DirectX:1995, GLIDE: 1996 OGL 1.1-1.5: 1997-2002

Bardziej szczegółowo

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM) ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM) LABORATORIUM 5 - LOKALIZACJA OBIEKTÓW METODĄ HISTOGRAMU KOLORU 1. WYBÓR LOKALIZOWANEGO OBIEKTU Pierwszy etap laboratorium polega na wybraniu lokalizowanego obiektu.

Bardziej szczegółowo

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

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Obsługa obrazków w PHP Wprowadzenie Tworzenie i niszczenie obrazka Kolory Funkcje od obsługi obrazków - 1 - Wprowadzenie Przygotowanie

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

1 Temat: Vertex Shader

1 Temat: Vertex Shader Instrukcja Architektura procesorów graficznych 1 Temat: Vertex Shader Przygotował: mgr inż. Tomasz Michno 1 Wstęp 1.1 Czym jest shader Shader jest programem (zazwyczaj krótkim), wykonywanym przez kartę

Bardziej szczegółowo

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

Grafika komputerowa. Dla DSI II

Grafika komputerowa. Dla DSI II Grafika komputerowa Dla DSI II Rodzaje grafiki Tradycyjny podział grafiki oznacza wyróżnienie jej dwóch rodzajów: grafiki rastrowej oraz wektorowej. Różnica pomiędzy nimi polega na innej interpretacji

Bardziej szczegółowo

Wprowadzenie do klas w C++ oraz biblioteki opengl

Wprowadzenie do klas w C++ oraz biblioteki opengl Wprowadzenie do klas w C++ oraz biblioteki opengl 1. Bibliotek opengl. W celu rozpoczęcia pracy z użyciem biblioteki opengl należy pobrać pliki archiwum glut- 3.7.6.zip ze strony: http://www.opengl.org/resources/libraries/glut/glut_downloads.php

Bardziej szczegółowo

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak: Ćwiczenie nr 6 Temat: Operacje na łańcuchach znaków. Zagadnienia: Zasady pracy z łańcuchami tekstowymi (tablice wartości typu char). funkcje standardowe operacji na łańcuchach, funkcje I/O dla operacji

Bardziej szczegółowo

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

Programowanie Równoległe wykład, 21.01.2013. CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe wykład, 21.01.2013 CUDA, przykłady praktyczne 1 Maciej Matyka Instytut Fizyki Teoretycznej Motywacja l CPU vs GPU (anims) Plan CUDA w praktyce Wykład 1: CUDA w praktyce l aplikacja

Bardziej szczegółowo

Podstawy grafiki komputerowej. Teoria obrazu.

Podstawy grafiki komputerowej. Teoria obrazu. WAŻNE POJĘCIA GRAFIKA KOMPUTEROWA - to dział informatyki zajmujący się wykorzystaniem oprogramowania komputerowego do tworzenia, przekształcania i prezentowania obrazów rzeczywistych i wyimaginowanych.

Bardziej szczegółowo

OpenGL Światło (cieniowanie)

OpenGL Światło (cieniowanie) OpenGL Światło (cieniowanie) 1. Oświetlenie włączanie/wyłączanie glenable(gl_lighting); - włączenie mechanizmu oświetlenia gldisable(gl_lighting); - wyłączenie mechanizmu oświetlenia glenable(gl_light0);

Bardziej szczegółowo

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

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. Funkcje OpenGL

Bardziej szczegółowo

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

OpenGL oświetlenie i tekstury. OpenGL oświetlenie. Bogdan Kreczmer. OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

OpenGL przezroczystość

OpenGL przezroczystość OpenGL przezroczystość W standardzie OpenGL efekty przezroczystości uzyskuje się poprzez zezwolenie na łączenie kolorów: Kolor piksela tworzy się na podstawie kolorów obiektu przesłanianego i przesłaniającego

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

Bardziej szczegółowo

JSLib 4.1 Dokumentacja

JSLib 4.1 Dokumentacja 28 kwietnia 2015 JSLib 4.1 Dokumentacja Spis treści 1 Wprowadzenie 2 2 Klasa BigInt 2 2.1 Tworzenie liczb....................... 2 2.2 Operacje wejścia-wyjścia.................. 3 2.3 Operatory..........................

Bardziej szczegółowo

Grafika Komputerowa, Informatyka, I Rok

Grafika Komputerowa, Informatyka, I Rok SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Wstęp do programowania grafiki 3D z użyciem OpenGL. Transformacje geometryczne. Grafika Komputerowa, Informatyka, I Rok Synteza grafiki 3D

Bardziej szczegółowo

Światła i rodzaje świateł. Dorota Smorawa

Światła i rodzaje świateł. Dorota Smorawa Światła i rodzaje świateł Dorota Smorawa Rodzaje świateł Biblioteka OpenGL posiada trzy podstawowe rodzaje świateł: światło otoczenia, światło rozproszone oraz światło odbite. Dodając oświetlenie na scenie

Bardziej szczegółowo

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

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library OpenGL składa się z teoretycznego modelu grafiki 3D, zestawu typów i funkcji obsługujących różne cechy tego modelu. WjęzykuC: pliki

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38 Wykład 5 Potok Renderowania Oświetlenie mgr inż. 1/38 Podejście śledzenia promieni (ang. ray tracing) stosuje się w grafice realistycznej. Śledzone są promienie przechodzące przez piksele obrazu wynikowego

Bardziej szczegółowo

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Wykład 11 Grafika 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Grafika GDI+ GDI+ - Graphics Device Interface jeden z trzech podstawowych komponentów

Bardziej szczegółowo

Warsztaty dla nauczycieli

Warsztaty dla nauczycieli WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne

Bardziej szczegółowo

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

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT Temat: Zaimplementować system kryptografii wizualnej http://www.cacr.math.uwaterloo.ca/~dstinson/visual.html Autor: Tomasz Mitręga NSMW Grupa 1 Sekcja 2 1. Temat projektu

Bardziej szczegółowo

Tekstury. Dorota Smorawa

Tekstury. Dorota Smorawa Tekstury Dorota Smorawa Definiowanie obiektów tekstur Dodawanie tekstur należy rozpocząć od zdefiniowania nazw tekstur ładowanych do bufora. Dla ułatwienia pracy z teksturami możemy przygotować obiekty

Bardziej szczegółowo

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

OpenGL i Qt. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska w Qt i Qt Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2019 Bogdan Kreczmer Niniejszy dokument zawiera materiały

Bardziej szczegółowo

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia. Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia http://bazyluk.net/dydaktyka Grafika Komputerowa i Wizualizacja, Informatyka S1, II Rok O MNIE mgr inż. Pokój 322/WI2 lub 316/WI2 bbazyluk@wi.zut.edu.pl

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

Stałe i zmienne znakowe. Stała znakowa: znak Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby

Bardziej szczegółowo

8. Dynamiczne generowanie grafiki, cz. 2

8. Dynamiczne generowanie grafiki, cz. 2 8. Dynamiczne generowanie grafiki, cz. 2 8.1. Generowanie tekstu Chociaż tekst można umieścić na grafice korzystając z HTML (używając grafiki jako tła obiektu), często wygodniej jest umieścić tekst bezpośrednio

Bardziej szczegółowo