Mobilne aplikacje multimedialne. OpenGL

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

Download "Mobilne aplikacje multimedialne. OpenGL"

Transkrypt

1 Mobilne aplikacje multimedialne OpenGL Marek Kulawiak Katedra Systemów Geoinformatycznych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

2 Open Graphics Library API do tworzenia aplikacji wyświetlających grafikę 2D i 3D w czasie rzeczywistym z akceleracją sprzętową Możliwość programowania w: Ada, C, C++, C#, Common Lisp, Delphi, Fortran, Haskell, Perl, Python, Java,... Dostępność na systemach operacyjnych: Windows, Linux, OS X Pochodne standardu OpenGL: OpenGL ES (Android, ios) WebGL (przeglądarki internetowe)

3 Pierwsza połowa lat 90. wyliczanie grafiki na procesorze dostosowanie do różnego sprzętu na PC Źródło:

4 Początki OpenGL Rok 1992: specyfikacja OpenGL 1.0 Rok 1995: pierwsze karty graficzne dostosowane do wyświetlania grafiki 3D Rok 1996: wydanie przez Microsoft pierwszej wersji standardu Direct3D Rok 1997: OpenGL 1.1

5 Druga połowa lat 90. GLQuake rasteryzacja z użyciem karty graficznej wyższa rozdzielczość Źródło:

6 Druga połowa lat 90. Rok 1997: ostra krytyka standardu Direct3D Chris Hecker: An Open Letter to Microsoft: Do the Right Thing for the 3D Game Industry Rok 1999: GeForce pierwsza karta graficzna oferująca T&L (Transform & Lighting) znaczne odciążenie procesora dostępność T&L w OpenGL

7 Druga połowa lat 90. Quake III Arena (OpenGL) wykorzystanie silnika id Tech 3 w innych popularnych grach Źródła:

8 Struktura programu w OpenGL funkcja tworząca kontekst graficzny funkcja rysująca scenę funkcja skalująca obraz do nowych rozmiarów okna

9 GL_LINES gl.glbegin(gl2.gl_lines); gl.glcolor3f(1f, 1f, 1f); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 0, 100, 0); gl.glvertex3f( 0, 100, 0); gl.glvertex3f(-100, -100, 0); gl.glend();

10 GL_LINE_STRIP gl.glbegin(gl2.gl_line_strip); gl.glcolor3f(1f, 1f, 1f); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 0, 100, 0); gl.glvertex3f(-100, -100, 0); gl.glend();

11 GL_TRIANGLES gl.glbegin(gl2.gl_triangles); gl.glcolor3f(1f, 0.8f, 0f); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 0, 100, 0); gl.glend();

12 GL_TRIANGLE_STRIP gl.glbegin(gl2.gl_triangle_strip); gl.glcolor3f(1f, 0.8f, 0f); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, 100, 0); gl.glvertex3f(-100, 100, 0); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 100, 100, 0); gl.glend();

13 GL_QUADS gl.glbegin(gl2.gl_quads); gl.glcolor3f(1f, 0.8f, 0f); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 100, 100, 0); gl.glvertex3f(-100, 100, 0); gl.glend();

14 GL_QUADS gl.glbegin(gl2.gl_quads); gl.glcolor3f(1f, 1f, 0f); gl.glvertex3f(-100, -100, 0); gl.glcolor3f(0f, 1f, 0f); gl.glvertex3f( 100, -100, 0); gl.glcolor3f(0f, 0.5f, 1f); gl.glvertex3f( 100, 100, 0); gl.glcolor3f(1f, 0f, 0f); gl.glvertex3f(-100, 100, 0); gl.glend();

15 Atrybuty wierzchołków obiektu glvertex glcolor gltexcoord glnormal...

16 Wektory normalne Normalne wyliczone dla każdej ściany. Normalne wyliczone dla każdego wierzchołka.

17 Wektory normalne (2) Źródło:

18 Zmiana atrybutów sceny gl.glpushattrib(gl2.gl_lighting); gl.gldisable(gl2.gl_lighting); gl.glbegin(gl.gl_quads); gl.glcolor3f(1f, 1f, 0f); gl.glcolor3f(0f, 1f, 0f); gl.glcolor3f(0f, 0.5f, 1f); gl.glcolor3f(1f, 0f, 0f); gl.glend(); gl.glpopattrib(); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 100, 100, 0); gl.glvertex3f(-100, 100, 0);

19 Zmiana atrybutów i transformacji gl.glpushmatrix(); gl.gltranslatef(-10f, 0f, -10f); gl.glpushattrib(gl2.gl_lighting); gl.gldisable(gl2.gl_lighting); gl.glbegin(gl.gl_quads); gl.glcolor3f(1f, 1f, 0f); gl.glcolor3f(0f, 1f, 0f); gl.glcolor3f(0f, 0.5f, 1f); gl.glcolor3f(1f, 0f, 0f); gl.glend(); gl.glpopattrib(); gl.glpopmatrix(); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 100, 100, 0); gl.glvertex3f(-100, 100, 0);

20 Macierze transformacji (1) gl.glmatrixmode(gl2.gl_modelview); gl.glloadidentity(); [ ] [ ] [] [] modelviewmatrix = x x 0100 y = y 0010 z z 0001 w w

21 Macierze transformacji (2) gl.gltranslatef(-10f, 0f, -10f); [ ][ ] [ ] [] [ ] 100 X Y translationmatrix = = 001 Z =

22 Macierze transformacji (3) gl.glscalef(2f, 2f, 2f); [ ][ ] [ ] [] [ ] X Y scalingmatrix = = 0 0 Z x 2x y = 2y 0020 z 2z 0001 w w

23 Listy rozkazów Listy rozkazów (ang. display lists) OpenGL, które są przekazywane do karty graficznej tylko raz i pozostają w jej pamięci. Do narysowania obiektu wystarczy wywołanie jednej funkcji: glcalllist(identyfikator_listy). Zaleta: szybsze działanie programu. Wada: listy nadają się tylko do obiektów o stałym kształcie.

24 Przykład stworzenia listy rozkazów int listid; // Stworzenie listy. listid = gl.glgenlists(1); gl.glnewlist(listid, GL2.GL_COMPILE); gl.glbegin(gl2.gl_triangles); gl.glcolor3f(1f, 0.8f, 0f); gl.glvertex3f(-100, -100, 0); gl.glvertex3f( 100, -100, 0); gl.glvertex3f( 0, 100, 0); gl.glend(); gl.glendlist(); // Narysowanie obiektu. gl.glcalllist(listid);

25 Vertex Buffer Objects Technika polegająca na przechowywaniu obiektów zawierających dane o wierzchołkach w pamięci GPU. Podobna prędkość jak przy użyciu list. Możliwość późniejszej modyfikacji zawartości VBO. Wada: trudniejsze w użyciu.

26 VBO: indeksy wierzchołków float[] vertexarray = {-100, -100, 0, 100, -100, 0, 100, 100, 0, -100, 100, 0}; [0] [1] [2] [3] float[] colorarray = {1f, 1f, 0f, 0f, 1f, 0f, 0f, 0.5f, 1f, 1f, 0f, 0f}; [0] [1] [2] [3] short[] indexarray = {0,1,2, 0,2,3};

27 VBO: przygotowanie danych FloatBuffer vertices, colors; ShortBuffer indices; int VBOVertices, VBOColors, VBOIndices; float[] vertexarray = {-100, -100, 0, 100, -100, 0, 100, 100, 0, -100, 100, 0}; vertices = BufferUtil.newFloatBuffer(vertexArray.length); vertices.put(vertexarray); vertices.flip(); float[] colorarray = {1f, 1f, 0f, 0f, 1f, 0f, 0f, 0.5f, 1f, 1f, 0f, 0f}; colors = BufferUtil.newFloatBuffer(colorArray.length); colors.put(colorarray); colors.flip(); short[] indexarray = {0, 1, 2, 0, 2, 3}; indices = BufferUtil.newShortBuffer(indexArray.length); indices.put(indexarray); indices.flip();

28 VBO: inicjalizacja buforów int[] temp = new int[3]; gl.glgenbuffers(3, temp, 0); VBOVertices = temp[0]; gl.glbindbuffer(gl2.gl_array_buffer, VBOVertices); gl.glbufferdata(gl2.gl_array_buffer, vertices.capacity() * BufferUtil.SIZEOF_FLOAT, vertices, GL2.GL_STATIC_DRAW); gl.glbindbuffer(gl2.gl_array_buffer, 0); VBOColors = temp[1]; gl.glbindbuffer(gl2.gl_array_buffer, VBOColors); gl.glbufferdata(gl2.gl_array_buffer, colors.capacity() * BufferUtil.SIZEOF_FLOAT, colors, GL2.GL_STATIC_DRAW); gl.glbindbuffer(gl2.gl_array_buffer, 0); VBOIndices = temp[2]; gl.glbindbuffer(gl2.gl_element_array_buffer, VBOIndices); gl.glbufferdata(gl2.gl_element_array_buffer, indices.capacity() * BufferUtil.SIZEOF_SHORT, indices, GL2.GL_STATIC_DRAW); gl.glbindbuffer(gl2.gl_element_array_buffer, 0);

29 VBO: rysowanie gl.glenableclientstate(gl2.gl_vertex_array); gl.glenableclientstate(gl2.gl_color_array); gl.glbindbuffer(gl2.gl_array_buffer, VBOColors); gl.glcolorpointer(3, GL2.GL_FLOAT, 0, 0); gl.glbindbuffer(gl2.gl_array_buffer, VBOVertices); gl.glvertexpointer(3, GL2.GL_FLOAT, 0, 0); gl.glbindbuffer(gl2.gl_element_array_buffer, VBOIndices); gl.gldrawelements(gl2.gl_triangles, indices.capacity(), GL2.GL_UNSIGNED_SHORT, 0); gl.gldisableclientstate(gl2.gl_color_array); gl.gldisableclientstate(gl2.gl_vertex_array);

30 VBO: modyfikacja danych // Inicjalizacja buforów. gl.glbindbuffer(gl2.gl_array_buffer, VBOVertices); gl.glbufferdata(gl2.gl_array_buffer, vertices.capacity() * BufferUtil.SIZEOF_FLOAT, vertices, GL2.GL_STREAM_DRAW); gl.glbindbuffer(gl2.gl_array_buffer, 0); // Rysowanie. gl.glbindbuffer(gl2.gl_array_buffer, VBOVertices); gl.glvertexpointer(3, GL2.GL_FLOAT, 0, 0); FloatBuffer verticesbuffer = gl.glmapbuffer(gl2.gl_array_buffer, GL2.GL_WRITE_ONLY).asFloatBuffer(); verticesbuffer.position(9); verticesbuffer.put(-50.f); verticesbuffer.put(50.f); gl.glunmapbuffer(gl2.gl_array_buffer);

31 VBO: modyfikacja danych (2) glbufferdata() GL_STATIC_DRAW GL_DYNAMIC_DRAW GL_STREAM_DRAW GL_STATIC_READ GL_DYNAMIC_READ GL_STREAM_READ GL_STATIC_COPY GL_DYNAMIC_COPY GL_STREAM_COPY glmapbuffer() GL_WRITE_ONLY GL_READ_ONLY GL_READ_WRITE

32 Początki shaderów Rok 2000: GeForce 3 - pierwsza karta graficzna z obsługą shaderów możliwość programowania shaderów w DirectX 8, ale nie w OpenGL 1.2 Rok 2004: wprowadzenie GLSL w OpenGL 2.0 spoźniona obsługa shaderów w OpenGL

33 OpenGL Shading Language GLSL jest językiem programowania wysokiego poziomu służącego do tworzenia tzw. shaderów, czyli programów wykonywanych na specjalizowanych procesorach karty graficznej. Użycie shaderów powoduje nadpisanie domyślnego potoku renderowania bardziej elastycznym rozwiązaniem, zezwalającym m.in. na dokładniejsze wyliczanie oświetlenia.

34 Wyliczanie oświetlenia Dla wierzchołków (per-vertex lighting) Dla pikseli (per-pixel lighting) Źródło:

35 Struktura shaderów Najczęściej wykorzystywane rodzaje shaderów: są dwa vertex shader: wykonywany dla każdego wierzchołka fragment/pixel shader: wykonywany dla każdego fragmentu zrasteryzowanego obrazu fragmenty odpowiadają pikselom obrazu, ale część z nich jest usuwana

36 Typy proste w GLSL Skalary Wektory bool bvec2, bvec3, bvec4 uint uvec2, uvec3, uvec4 int ivec2, ivec3, ivec4 float vec2, vec3, vec4 double dvec2, dvec3, dvec4

37 Wektory Możliwe metody dostępu do składowych: Jak do elementów tablicy [] Za pomocą masek: xyzw, rgba, stpq Przykład: różne sposoby pobrania wartości drugiej składowej: float tmp = vcolor[1]; float tmp = vcolor.g; float tmp = vcolor.y; float tmp = vcolor.t;

38 Wektory (2) Sposoby tworzenia wektorów: vec4 rgbavector = vec4(0.3, 0.6, 0.9, 1.0); vec3 rgbvector = rgbavector.rgb; vec3 bgrvector = rgbvector.bgr; vec4 anothervector = vec4(bgrvector, 0.5); vec2 yetanothervector = anothervector.zz; yetanothervector[0] = 1.0 yetanothervector[0]; Pytanie do publiczności: Jaka jest zawartość wektora yetanothervector?

39 Najprostszy możliwy przykład Zastosowanie poniższej pary shaderów spowoduje pokolorowanie obiektu jednolitym, czerwonym kolorem: // Vertex Shader void main(void) { // Wyznaczenie położenia wierzchołka. gl_position = ftransform(); } // Fragment Shader void main(void) { // Przypisanie koloru fragmentowi obrazu. gl_fragcolor = vec4(1.0,0.0,0.0, 1.0); }

40 Komunikacja z shaderami W OpenGL istnieje mechanizm umożliwiający komunikację z shaderami za pomocą specjalnych rodzajów zmiennych: uniform: zmienne globalne przekazywane z programu głównego do shaderów varying: zmienne tworzone w vertex shaderze i następnie odczytywane we fragment shaderze w zinterpolowanej postaci attribute: wartości dotyczące konkretnych wierzchołków (położenie, kolor, normalne, itp.)

41 Nieco trudniejszy przykład Uwzględnienie koloru wierzchołków i przekazanie wartości kanału alpha (przezroczystości): // Vertex Shader varying vec4 vcolor; void main(void) { // Wyznaczenie położenia wierzchołka. gl_position = ftransform(); // Zapisanie koloru wierzchołka do zmiennej vcolor. vcolor = gl_color; } // Fragment Shader uniform float alpha; varying vec4 vcolor; void main(void) { // Przypisanie aktualnemu fragmentowi obrazu // automatycznie zinterpolowanego koloru wierzchołka. gl_fragcolor = vec4(vcolor.rgb, alpha); }

42 Macierze transformacji Zmienne predefiniowane w GLSL: uniform mat4 gl_modelviewmatrix; macierz widoku modelu uniform mat4 gl_projectionmatrix; macierz projekcji uniform mat4 gl_modelviewprojectionmatrix; iloczyn macierzy widoku modelu i projekcji

43 Macierze transformacji (2) Różne sposoby wyznaczenia pozycji wierzchołka w vertex shaderze: void main() { // Przemnożenie pozycji wierzchołka przez macierz projekcji oraz // macierz widoku modelu. gl_position = gl_projectionmatrix * gl_modelviewmatrix * gl_vertex; // Przemnożenie położenia wierzchołka przez wcześniej wyliczoną // macierz będącą wynikiem iloczynu macierzy projekcji // i macierzy widoku modelu. gl_position = gl_modelviewprojectionmatrix * gl_vertex; // Wykorzystanie gotowej funkcji transformującej pozycję wierzchołka // (brak możliwości dokonania dodatkowych przekształceń). gl_position = ftransform(); }

44 Stan obecny OpenGL Sukces DirectX na systemach Windows John Carmack: Direct3D is a rather better API today OpenGL still works fine and we wouldn t get any huge benefits by making the switch Komercyjne wykorzystanie OpenGL: Blizzard: porty gier na OS X Valve: porty gier na Linuxa

45 OpenGL for Embedded Systems Uprosczona wersja OpenGL dostosowana do urządzeń mobilnych 2003: specyfikacja OpenGL ES 1.0 ES oparte na OpenGL : specyfikacja OpenGL ES 2.0 ES 2.0 oparty na OpenGL 2.0 Dostępność na systemach operacyjnych: Android, ios, BlackBerry, Symbian Możliwość programowania w: Java, Objective-C, C, C++

46 Różnice pomiędzy OpenGL a OpenGL ES 1.0 brak glbegin i glend (konieczność korzystania z tablic wierzchołków i VBO) brak wsparcia dla Quadów (trzeba operować na trójkątach) brak display lists i wiele innych braków...

47 Różnice pomiędzy OpenGL ES 1.1 a ES 2.0 Rezygnacja ze stałego potoku renderowania (konieczność stosowania shaderów nawet w najprostszych aplikacjach). Mniej uproszczeń związanych z transformacją widoku (w tym glpush i glpop, trzeba samemu wyliczać macierze transformacji i przekazywać je do shaderów.

48 Porównanie OpenGL z OpenGL ES 2.0 Zmiana jednego z atrybutów sceny i wyczyszczenie jej tła: // OpenGL (JOGL) // Włączenie trybu testowania głębokości. gl.glenable(gl2.gl_depth_test); // Wyczyszczenie sceny. gl.glclearcolor(0.0f, 0.0f, 0.0f, 0.0f); gl.glclear(gl2.gl_color_buffer_bit GL2.GL_DEPTH_BUFFER_BIT); // OpenGL ES (Android) // Włączenie trybu testowania głębokości. GLES20.glEnable(GLES20.GL_DEPTH_TEST); // Wyczyszczenie sceny. GLES20.glClearColor(0f, 0f, 0f, 0f);

49 Porównanie OpenGL z OpenGL ES 2.0 Transformacje macierzy: // OpenGL (JOGL) // Wybór macierzy widoku modelu. gl.glmatrixmode(gl2.gl_modelview); // Przypisanie aktualnej macierzy wartości macierzy jednostowej. gl.glloadidentity(); // Dokonanie transformacji. gl.gltranslatef(x, y, z); // OpenGL ES (Android) // Przypisanie macierzy widoku modelu wartości macierzy jednostkowej. Matrix.setIdentityM(mModelMatrix, 0); // Dokonanie transformacji. Matrix.translateM(mModelMatrix, x, y, z);

50 Zmienne predefiniowane W OpenGL istnieje wiele predefiniowanych zmiennych dostępnych w shaderach: attribute vec4 gl_color; attribute vec3 gl_normal; attribute vec4 gl_vertex; attribute vec4 gl_multitexcoord0; uniform mat4 gl_modelviewprojectionmatrix; W OpenGL ES 2.0 wszystkie zmienne wykorzystywane w shaderach muszą być odpowiednio zadeklarowane...

51 Przekazywanie zmiennych do shaderów // Vertex Shader uniform mat4 umvpmatrix; // odpowiednik gl_modelviewprojectionmatrix attribute vec4 aposition; // odpowiednik gl_vertex void main() { gl_position = umvpmatrix * aposition; } // Rysowanie obiektu int mpositionhandle = GLES20.glGetAttribLocation(mProgram, "aposition"); GLES20.glEnableVertexAttribArray(mPositionHandle); GLES20.glVertexAttribPointer(mPositionHandle, 3, GLES20.GL_FLOAT, false, 0, vertexbuffer); int mmvphandle = GLES20.glGetUniformLocation(mProgram, "umvpmatrix"); GLES20.glUniformMatrix4fv(mMVPHandle, 1, false, mvpmatrix, 0); GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexcount); GLES20.glDisableVertexAttribArray(mPositionHandle);

52 Web Graphics Library (WebGL) API oparte na OpenGL ES w wersji 2.0 renderowanie w obiekcie Canvas dostępnym w standardzie HTML5 działa na wielu różnych platformach (również mobilnych) oferuje sprzętową akcelerację nie wymaga żadnych wtyczek do przeglądarek (w przeciwieństwie do VRML i X3D)

53 Dostępność WebGL Na komputerach stacjonarnych: Chrome, Firefox, Opera, Safari, Internet Explorer Na urządzeniach mobilnych: Chrome, Firefox for Mobile, Opera Mobile (Android), Internet Explorer, Blackberry Playbook,...

54 Przykład Stworzenie kontekstu WebGL: var canvas = document.getelementbyid("nazwa_elementu_canvas"); var gl; try { gl = canvas.getcontext("webgl"); gl.viewportwidth = canvas.width; gl.viewportheight = canvas.height; } catch (e) { } if (!gl) { alert("błąd inicjalizacji WebGL."); }

55 Przykład (2) VBO (z użyciem biblioteki glmatrix): var trianglevertexpositionbuffer = gl.createbuffer(); gl.bindbuffer(gl.array_buffer, trianglevertexpositionbuffer); var vertices = [ 0.0, 1.0, 0.0, 1.0,-1.0, 0.0, 1.0,-1.0, 0.0 ]; gl.bufferdata(gl.array_buffer, new Float32Array(vertices), gl.static_draw); trianglevertexpositionbuffer.itemsize = 3; trianglevertexpositionbuffer.numitems = 3; var trianglevertexcolorbuffer = gl.createbuffer(); gl.bindbuffer(gl.array_buffer, trianglevertexcolorbuffer); var colors = [ 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0 ]; gl.bufferdata(gl.array_buffer, new Float32Array(colors), gl.static_draw); trianglevertexcolorbuffer.itemsize = 4; trianglevertexcolorbuffer.numitems = 3;

56 Przykład (3) Rysowanie (z użyciem biblioteki glmatrix): var mvmatrix = mat4.create(); var pmatrix = mat4.create(); gl.viewport(0, 0, gl.viewportwidth, gl.viewportheight); gl.clear(gl.color_buffer_bit gl.depth_buffer_bit); mat4.perspective(45, gl.viewportwidth / gl.viewportheight, 0.1, 100.0, pmatrix); mat4.identity(mvmatrix); mat4.translate(mvmatrix, [-1.5, 0.0, -7.0]); gl.bindbuffer(gl.array_buffer, trianglevertexpositionbuffer); gl.vertexattribpointer(shaderprogram.vertexpositionattribute, trianglevertexpositionbuffer.itemsize, gl.float, false, 0, 0); gl.bindbuffer(gl.array_buffer, trianglevertexcolorbuffer); gl.vertexattribpointer(shaderprogram.vertexcolorattribute, trianglevertexcolorbuffer.itemsize, gl.float, false, 0, 0); setmatrixuniforms(); gl.drawarrays(gl.triangles, 0, trianglevertexpositionbuffer.numitems);

57 Silniki 3D oparte na WebGL J3D Three.js SpiderGL Babylon.js

58 Dziękuję za uwagę

Grafika trójwymiarowa

Grafika trójwymiarowa Strona 1 Grafika 3D w systemie Android Wprowadzenie do OpenGL ES Podstawy rysowania Rzutowanie i kamera Klasa GLSurfaceView Algorytm rysowania Tekstury Strona 2 Grafika 3D w systemie Android W komputerach,

Bardziej szczegółowo

Bartłomiej Filipek www.ii.uj.edu.pl/~filipek

Bartłomiej Filipek www.ii.uj.edu.pl/~filipek Bartłomiej Filipek www.ii.uj.edu.pl/~filipek Nasz Cel Prehistoria krótki wstęp Nowa era! Vertex Shaders Fragment Shaders Podstawy GLSL Obsługa GLSL z API OpenGL Dodajmy parę efektów! Podsumowanie Dodatkowe

Bardziej szczegółowo

Wprowadzenie do WebGL

Wprowadzenie do WebGL Wprowadzenie do WebGL Monika Falarz, Grzegorz Jaśko, Patryk Kiepas 9 listopad 2012 Streszczenie Dokument prezentuje podstawy i wprowadza w proces tworzenia grafiki przestrzennej przy użyciu biblioteki

Bardziej szczegółowo

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL Aleksander Denisiuk Uniwersytet Warmińsko-Mazurski Olsztyn, ul. Słoneczna 54 denisjuk@matman.uwm.edu.pl 7 października 2014 1 /

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

Plan wykładu. Akcelerator 3D Potok graficzny

Plan wykładu. Akcelerator 3D Potok graficzny Plan wykładu Akcelerator 3D Potok graficzny Akcelerator 3D W 1996 r. opracowana została specjalna karta rozszerzeń o nazwie marketingowej Voodoo, którą z racji wspomagania procesu generowania grafiki 3D

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

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak ANDROID OpenGL ES 1.0 Tomasz Dzieniak Wymagania JRE & JDK 5.0 + IDE (Eclipse 3.3.1 + / Netbeans 7.0.0 +) Android SDK Starter Package Android SDK Components Pierwszy program Project name: OpenGL Build Target:

Bardziej szczegółowo

grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie

grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie Krzysztof Czech, 2 rok IZ Grzegorz Duszyński, 2 rok IZ Daniel Engel, 2 rok IZ Łukasz Olech, 2 rok IZ Radek Wilczak, 2 rok EKA Nadpisywanie

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu Synteza dźwięku i obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złożonych obliczeń, szczególnie jeżeli chodzi o generowanie płynnej

Bardziej szczegółowo

Karty graficzne możemy podzielić na:

Karty graficzne możemy podzielić na: KARTY GRAFICZNE Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest odbiór i przetwarzanie otrzymywanych od komputera

Bardziej szczegółowo

Przyspieszanie sprzętowe

Przyspieszanie sprzętowe Synteza dźwięku i obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złoŝonych obliczeń, szczególnie jeŝeli chodzi o generowanie płynnej

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu Synteza i obróbka obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złożonych obliczeń, szczególnie jeżeli chodzi o generowanie płynnej

Bardziej szczegółowo

Wykład 4. Rendering (1) Informacje podstawowe

Wykład 4. Rendering (1) Informacje podstawowe Wykład 4. Rendering (1) Informacje podstawowe Z punktu widzenia dzisiejszego programowania gier: Direct3D jest najczęściej wykorzystywanym przez profesjonalnych deweloperów gier API graficznym na platformie

Bardziej szczegółowo

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1) OpenGL - Open Graphics Library Programowanie grafiki komputerowej Rados$aw Mantiuk Wydzia$ Informatyki Zachodniopomorski Uniwersytet Technologiczny! OpenGL: architektura systemu do programowania grafiki

Bardziej szczegółowo

Idź do. Spis treści Przykładowy rozdział Skorowidz. Katalog książek. Katalog online Zamów drukowany katalog. Twój koszyk.

Idź do. Spis treści Przykładowy rozdział Skorowidz. Katalog książek. Katalog online Zamów drukowany katalog. Twój koszyk. Idź do Spis treści Przykładowy rozdział Skorowidz Katalog książek Katalog online Zamów drukowany katalog Twój koszyk Dodaj do koszyka Cennik i informacje Zamów informacje o nowościach Zamów cennik Czytelnia

Bardziej szczegółowo

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Systemy wirtualnej rzeczywistości. Komponenty i serwisy Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki

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

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

Bartosz Bazyluk OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery)

Bartosz Bazyluk OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery) OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery) Programowanie Gier Komputerowych, Informatyka S, III Rok PLAN WYKŁADU Transformacje geometryczne Pożegnanie

Bardziej szczegółowo

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska Programowanie gier 3D w HTML5 Andrzej P.Urbański Politechnika Poznańska Moje marzenie Od dawna jest znany pakiet Open GL napisany w C++ i bardzo ułatwiający tworzenie gier 3D Zaproponowałem kiedyś jako

Bardziej szczegółowo

Systemy Geoinformatyczne

Systemy Geoinformatyczne Politechnika Gdańska Wydział Elektroniki, Telekomunikacji i Informatyki Katedra Systemów Geoinformatycznych Profil dyplomowania: Systemy Geoinformatyczne Specjalność: Technologie geoinformatyczne i mobilne

Bardziej szczegółowo

Proceduralne podejście do generowania tekstur

Proceduralne podejście do generowania tekstur Proceduralne podejście do generowania tekstur Paweł Sabat Praca zamieszczona na http://noni.hswro.org Wersja bez obrazków na końcu Praca inżynierska Promotor: dr Przemysław Kobylański Wydział Podstawowych

Bardziej szczegółowo

Grafika komputerowa i wizualizacja

Grafika komputerowa i wizualizacja Grafika komputerowa i wizualizacja Radosław Mantiuk ( rmantiuk@wi.zut.edu.pl, p. 315 WI2) http://rmantiuk.zut.edu.pl Katedra Systemów Multimedialnych Wydział Informatyki, Zachodniopomorski Uniwersytet

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

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

Proceduralne podejście do generowania tekstur

Proceduralne podejście do generowania tekstur Proceduralne podejście do generowania tekstur Paweł Sabat Praca zamieszczona na http://noni.hswro.org Wersja z obrazkami na końcu Praca inżynierska Promotor: dr Przemysław Kobylański Wydział Podstawowych

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

GRY KOMPUTEROWE 3D OpenGL DirectX Ogre3D Crystal Space ClanLib Irrlicht SDL Ardor3D jmonkey Engine GRY KOMPUTEROWE 2D ORX Troll2D

GRY KOMPUTEROWE 3D OpenGL DirectX Ogre3D Crystal Space ClanLib Irrlicht SDL Ardor3D jmonkey Engine GRY KOMPUTEROWE 2D ORX Troll2D GRY KOMPUTEROWE 3D 1. Napisać grę komputerową 3D o dowolnej tematyce oraz dowolnego rodzaju z wykorzystaniem OpenGL (bez dodatkowych framework'ów). Mile widziane dodatkowe efekty graficzne oraz dźwiękowe.

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje! Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje! Jak sprawnie tworzyć podstawowe obiekty, oświetlać je i cieniować? Jak napisać własne programy, korzystając

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

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski Agenda Dlaczego PhoneGap i co to jest? Możliwości PhoneGap Jak pisać aplikacje z PhoneGap? Konfiguracja i przykład aplikacji

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python PyGame 18 grudnia 2015 Plan wykładu 1 Wprowadzenie Parametry wyświetlania Powierzchnie 2 Klawiatura Mysz Dżojstik 3 Odtwarzanie plików dźwiękowych Odtwarzanie muzyki Samodzielne tworzenie dźwięków 4 3D:

Bardziej szczegółowo

Wyświetlanie publikacji w formacie DjVu. Wyświetlanie publikacji w Bałtyckiej Bibliotece Cyfrowej można realizować na 3 sposoby:

Wyświetlanie publikacji w formacie DjVu. Wyświetlanie publikacji w Bałtyckiej Bibliotece Cyfrowej można realizować na 3 sposoby: Wyświetlanie publikacji w formacie DjVu Wyświetlanie publikacji w Bałtyckiej Bibliotece Cyfrowej można realizować na 3 sposoby: 1. Za pomocą wbudowanego apletu DjVu (na komputerze wymagana jest Java).

Bardziej szczegółowo

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

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej

Bardziej szczegółowo

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Cloud Customers Relationships Wymagania wersja systemu: 4.1.10

Cloud Customers Relationships Wymagania wersja systemu: 4.1.10 Cloud Customers Relationships Wymagania wersja systemu: 4.1.10 Marzec, 2012 2012 EMK Wszystkie prawa zastrzeżone. Ten dokument zawiera informacje, które są wyłączną własnością firmy EMK. Adresat dokumentu

Bardziej szczegółowo

PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI DirectX

PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI DirectX Mgr inż. Witold BUŻANTOWICZ Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Wojskowa Akademia Techniczna PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

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

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9 Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3 Spis treści Wprowadzenie... 9 1. Opis programu i instalacja... 13 1.1. Nowości w SWiSH Max2... 13 1.1.1. Wygląd okna programu... 13 1.1.2. Język skryptowy...

Bardziej szczegółowo

Multimedia i interfejsy. Ćwiczenie 5 HTML5

Multimedia i interfejsy. Ćwiczenie 5 HTML5 Multimedia i interfejsy Ćwiczenie 5 HTML5 Celem ćwiczenia jest poznanie nowych elementów wprowadzonych w HTML 5, do których należą m.in. video oraz canvas. Poniższy opis przedstawia sposób użycia tych

Bardziej szczegółowo

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa OpenGL - Koncepcja i architektura Aplikacja odwo!uje si" poprzez funkcje API OpenGL bezpo#rednio do karty graficznej (z pomini"ciem systemu operacyjnego). Programowanie grafiki komputerowej Rados!aw Mantiuk

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

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

STWORZENIE PRZYKŁADOWEJ

STWORZENIE PRZYKŁADOWEJ LABORATORIUM SYSTEMÓW MOBILNYCH STWORZENIE PRZYKŁADOWEJ APLIKACJI MOBILNEJ W J2ME I. Temat ćwiczenia II. Wymagania Wykonanie poprzedniego ćwiczenia III. Ćwiczenie 1. Stworzenie aplikacji Celem ćwiczenia

Bardziej szczegółowo

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX. Protokół HTTP 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX. 1 Usługi WWW WWW (World Wide Web) jest najpopularniejszym sposobem udostępniania

Bardziej szczegółowo

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios Politechnika Poznańska, Instytut Informatyki, TWO/GE Programowanie dla ios 13 stycznia 2012 Urządzenia ios Urządzenie Data prezentacji iphone 9.01.2007/06.2007 ipod touch 5.09.2007 iphone 3G 9.06.2008

Bardziej szczegółowo

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć

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

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu Komputerowe systemy na rynkach finansowych wykład 5 MQL4 - funkcje operujące na obiektach wykresu ObjectCreate - funkcja tworzy nowy obiekt graficzny, określonego typu oraz nadaje mu nazwę i przyporządkowuje

Bardziej szczegółowo

Organizacja pamięci w procesorach graficznych

Organizacja pamięci w procesorach graficznych Organizacja pamięci w procesorach graficznych Pamięć w GPU przechowuje dane dla procesora graficznego, służące do wyświetlaniu obrazu na ekran. Pamięć przechowuje m.in. dane wektorów, pikseli, tekstury

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych GPGPU Programowanie procesorów graficznych GPGPU 1 GPGPU Historia: lata 80 te popularyzacja systemów i programów z graficznym interfejsem specjalistyczne układy do przetwarzania grafiki 2D lata 90 te standaryzacja

Bardziej szczegółowo

Metodyka programowania. Podstawy C#

Metodyka programowania. Podstawy C# Metodyka programowania Podstawy C# Platforma.NET Platforma.NET (.NET Framework) Platforma programistyczna Microsoft, Obejmuje - środowisko uruchomieniowe CLR (Common Language Runtime) - biblioteki klas

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

Laboratorium grafiki i multimediów

Laboratorium grafiki i multimediów Ozajęciach Program Laboratorium grafiki i multimediów Michał Matuszak gruby@mat.umk.pl 22-02-2010 Ozajęciach Ozajęciach Program Wymiar zajęć: 45h Forma: laboratorium Zaliczenie na ocenę Obecność: obowiązkowa

Bardziej szczegółowo

Specyfikacja techniczna

Specyfikacja techniczna Specyfikacja techniczna Informacje wstępne Grupa Melog.com sp. z o.o Morizon SA nie ponosi odpowiedzialności finansowej w przypadku gdy klient nie dostarczy poprawionej wersji kreacji lub nie spełnia ona

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Ulotka. Wersja 2016.2

Ulotka. Wersja 2016.2 Ulotka Wersja 2016.2 Spis treści COMARCH ERP E-SKLEP... 3 AKTUALIZACJA DO WERSJI 2016.2... 4 SZABLON LIQUID KONWERSJA SZABLONU... 4 1 NOWOŚCI... 5 1.1 PORÓWNYWARKI CENOWE OPARTE NA SILNIKU LIQUID... 5

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

509 633 166 konrad@webmedio.pl

509 633 166 konrad@webmedio.pl 509 633 166 konrad@webmedio.pl Obsługa serwisowa Korzyści ze stałej obsługi Należy pamiętać, że internet to żywe i dynamicznie rozwijające się środowisko. Pakiet stałej obsługi daje gwarancję: bezpieczeństwa

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

która metoda jest najlepsza

która metoda jest najlepsza która metoda jest najlepsza dr inż. Marek Żabka Instytut Matematyki Wydział Matematyki Stosowanej Politechnika Śląska 20 września 2012r Nowa metoda tworzenia grafiki na stronie internetowej: element,,canvas

Bardziej szczegółowo

Systemy Rozproszone Technologia ICE

Systemy Rozproszone Technologia ICE Systemy Rozproszone Technologia ICE Zespół Systemów Rozproszonych () Katedra Informatyki AGH Kraków Kornel Skałkowski skalkow@agh.edu.pl Opracowano na podstawie książki: Henning M, Spruiell M. Distributed

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

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

Moc płynąca z kart graficznych

Moc płynąca z kart graficznych Moc płynąca z kart graficznych Cuda za darmo! Czyli programowanie generalnego przeznaczenia na kartach graficznych (GPGPU) 22 października 2013 Paweł Napieracz /20 Poruszane aspekty Przetwarzanie równoległe

Bardziej szczegółowo

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014 Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu Wydział Mechaniczny obowiązuje studentów rozpoczynających studia w roku akademickim 013/014 Kierunek studiów: Informatyka Stosowana Forma

Bardziej szczegółowo

Elementy do grafiki komputerowej. Wprowadzenie

Elementy do grafiki komputerowej. Wprowadzenie Elementy do grafiki komputerowej. Wprowadzenie Aleksander Denisiuk Uniwersytet Warmińsko-Mazurski Olsztyn, ul. Słoneczna 54 denisjuk@matman.uwm.edu.pl 1 / 16 Wprowadzenie Najnowsza wersja tego dokumentu

Bardziej szczegółowo

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres Artur Kozubski Software Development GigaCon Warszawa 2008 Plan Historia projektu Firebird Architektura serwera Administracja

Bardziej szczegółowo

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: 1. Listener dla przycisku. Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: W linii 24 tworzymy globalną metodę mglobal_onclicklistener,

Bardziej szczegółowo

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński MonoGame Wieloplatformowe gry w C# Mateusz Cicheński Plan prezentacji Założenia Alternatywy Narzędzia Różnice między WP8, ios, Android DEMO Podsumowanie Założenia CEL: Stworzenie wieloplatformowej gry

Bardziej szczegółowo

Politechnika Poznańska, Instytut Informatyki, SUM-TWO

Politechnika Poznańska, Instytut Informatyki, SUM-TWO Politechnika Poznańska, Instytut Informatyki, SUM-TWO 11 kwietnia 2015 Historia DirectX Gry pod DOS korzystały z własnych bibliotek graficznych. Pierwsze wersje Windows umożliwiały tworzenie grafiki tylko

Bardziej szczegółowo

dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ

dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ Wydział Elektrotechniki, Elektroniki, Informatyki i Automatyki Politechnika Łódzka Środowisko pracy grafików dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ Formaty

Bardziej szczegółowo

PyGame Gra w Ponga. Spis treści

PyGame Gra w Ponga. Spis treści - 1 - PyGame Gra w Ponga Opis implementacji: Używając biblioteki PyGame oraz języka Python, stworzymy prostą grę Pong. Autorzy: Łukasz Zarzecki, Robert Bednarz Czas realizacji: 90 min Poziom trudności:

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 Sławomir Samolej Rzeszów, 1999 1. Wstęp Większość tworzonych animacji w grafice komputerowej ma za zadanie

Bardziej szczegółowo

Należy ściągnąć oprogramowanie Apache na platformę

Należy ściągnąć oprogramowanie Apache na platformę Programowanie Internetowe Język PHP - wprowadzenie 1. Instalacja Oracle+Apache+PHP Instalacja Apache, PHP, Oracle Programy i ich lokalizacja Oracle Database 10g Express Edition10.2 http://www.oracle.com/technology/products/database/

Bardziej szczegółowo

Programowanie telefonów z Windows Phone 7, cz. 4

Programowanie telefonów z Windows Phone 7, cz. 4 Programowanie telefonów z Windows Phone 7, cz. 4 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój

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

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie Zofia Kruczkiewicz 1. Jakie warstwy zawiera aplikacja internetowa? 2. Wymień

Bardziej szczegółowo

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa

Bardziej szczegółowo

Co już można, a co będzie można zrobić w e-podręczniku technologicznie?

Co już można, a co będzie można zrobić w e-podręczniku technologicznie? Co już można, a co będzie można zrobić w e-podręczniku technologicznie? Tomasz Kuczyński, Poznańskie Centrum Superkomputerowo-Sieciowe Warszawa, 29 października 2013 r. Zaprezentuję Co już można, a co

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Kamil Nowakowski 2011

Kamil Nowakowski 2011 Kamil Nowakowski 2011 Zaprezentowane materiały pochodzą z silnika: Oraz z projektu : Czym jest grafika 3D nowoczesny sposób przedstawienia świata rzeczywistego. Odwzorowanie struktury obiektów, kolorów,

Bardziej szczegółowo

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Tytuł oryginału: Practical Android 4 Games Development Tłumaczenie: Szymon Pietrzak ISBN: 978-83-246-5087-3 Original edition copyright 2011 by J. F. DiMarzio. All rights reserved. Polish edition copyright

Bardziej szczegółowo

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia Obliczenie koloru powierzchni (ang. Lighting) Zbiór trójwymiarowych danych wej$ciowych wykorzystywanych do wygenerowania obrazu wyj$ciowego 2D. Cieniowanie (ang. Shading) Rados"aw Mantiuk Wydzia" Informatyki Zachodniopomorski Uniwersytet Technologiczny

Bardziej szczegółowo

KARTA KURSU. Grafika komputerowa

KARTA KURSU. Grafika komputerowa KARTA KURSU Nazwa Nazwa w j. ang. Grafika komputerowa Computer graphics Kod Punktacja ECTS* 3 Koordynator dr inż. Krzysztof Wójcik Zespół dydaktyczny: dr inż. Krzysztof Wójcik dr inż. Mateusz Muchacki

Bardziej szczegółowo

Grafika i komunikacja człowiek komputer Laboratorium. Część 3: Tekst, czcionki, kolory

Grafika i komunikacja człowiek komputer Laboratorium. Część 3: Tekst, czcionki, kolory UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI Opracował: mgr inż. Przemysław Pardel, dr hab. Bogdan Kwolek v1.01 2010 Grafika i komunikacja człowiek komputer Laboratorium Część 3: Tekst, czcionki, kolory

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,

Bardziej szczegółowo

Z usługi można korzystać jednocześnie na kilku urządzeniach. Jakość sygnału dostosowuje się do prędkości łącza.

Z usługi można korzystać jednocześnie na kilku urządzeniach. Jakość sygnału dostosowuje się do prędkości łącza. GSMONLINE.PL UPC wprowadza w Polsce Horizon TV 2014-05-21 UPC wprowadza do Polski usługę Horizon TV. Od 21.05 uzytkownicy pakietów Select Extra HD oraz Max Extra HD mogą korzystać ze specjalnej mobilnej

Bardziej szczegółowo

Programowanie RAD Delphi

Programowanie RAD Delphi Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje

Bardziej szczegółowo