TAM. Prezentace přednášek. Ústav počítačové grafiky a multimédií

Rozměr: px
Začít zobrazení ze stránky:

Download "TAM. Prezentace přednášek. Ústav počítačové grafiky a multimédií"

Transkript

1 TAM Prezentace přednášek Ústav počítačové grafiky a multimédií

2 Grafika na mobilních zařízeních OpenGL ES 2.0

3 Motto If Edison had a needle to find in a haystack, he would proceed at once with the diligence of the bee to examine straw after straw until he found the object of his search. I was a sorry witness of such doings, knowing that a little theory and calculation would have saved him ninety per cent of his labor. - Nikola Tesla IVS / Urychlování výpočtů, možnosti paralelizace 3

4 Obsah: Úvod do OpenGL OpenGL ES on embedded devices Reprezentace objektů ve vertex arrays Vertex a fragment shadery Texturování Framebuffer objekty Doporučená literatura IVS / Urychlování výpočtů, možnosti paralelizace 4

5 OpenGL Knihovna Open Graphics Library od SGI Dnes udržuje Khronos Group Kreslení pomocí Immediate mode (glvertex3f()) Display lists (glcalllists()) Arrays (gldrawarrays()) Fixed-function pipeline Binding pro mnoho jazyků C /C ++ Java (JOGL) Python (PyGL) Další... IVS / Urychlování výpočtů, možnosti paralelizace 5

6 OpenGL (ES 1.0) fixed-function pipeline IVS / Urychlování výpočtů, možnosti paralelizace 6

7 OpenGL programmable pipeline vertex shader tesselation shader geometry shader transform feedback fragment shader IVS / Urychlování výpočtů, možnosti paralelizace 7

8 OpenGL ES 2.0 pipeline vertex shader tesselation shader geometry shader transform feedback fragment shader IVS / Urychlování výpočtů, možnosti paralelizace 8

9 OpenGL ES on embedded devices Různé platformy NVIDIA Tegra (ULP GeForce) ARM Android-based devices C /C ++ Java Apple iphone Objective C Java Ubuntu, Win CE C /C ++ IVS / Urychlování výpočtů, možnosti paralelizace 9

10 OpenGL ES bez zařízení Motivace Vývojářské nástroje, možnost ladění Snadné použití Není potřeba mít cílové mobilní zařízení (zejména velké týmy) Emulace je možná na OpenGL 2.0 hardware See (and use): Android emulator (pomalý) IVS / Urychlování výpočtů, možnosti paralelizace 10

11 Inicializace OpenGL ES Windows CE WGL + nativní okna EGL Ubuntu GLX + Xserver EGL Android android.opengl.glsurfaceview (wrapper EGL) IVS / Urychlování výpočtů, možnosti paralelizace 11

12 Inicializace OpenGL ES - Android public class MyApp extends Activity { GLSurfaceView mglview; GLSurfaceView.Renderer mrenderer = new MyRenderer(this); protected void oncreate(bundle _instance) { super.oncreate oncreate(_instance); setcontentview(r.layout.main); settitle("opengl ES Hello World"); mglview = (GLSurfaceView)findViewById findviewbyid(r.id.glsv); mglview.seteglcontextclientversion seteglcontextclientversion(2); mglview.setrenderer setrenderer(mrenderer); } protected void onpause() { super.onpause onpause(); mglview.onpause onpause(); } protected void onresume() { super.onresume onresume(); mglview.onresume onresume(); } } IVS / Urychlování výpočtů, možnosti paralelizace 12

13 Inicializace OpenGL ES - Android public class MyRenderer implements GLSurfaceView.Renderer { private int mwidth = 640, mheight = 480; private MyApp mcontext; } public MyRenderer(MyApp context) { super(); mcontext = context; } public void ondrawframe(gl10 unused) { GLES20.glViewport glviewport(0, 0, mwidth, mheight); GLES20.glClearColor glclearcolor(0.0f, 0.0f, 1.0f, 1.0f); GLES20.glClear glclear(gles20.gl_color_buffer_bit); // GLES20.glDoSomethingRatherInteresting gldosomethingratherinteresting(12345); } public void onsurfacechanged(gl10 gl, int w, int h) { mwidth = w; mheight = h; } public void onsurfacecreated(gl10 gl, EGLConfig cfg) { /* perform init here */ } IVS / Urychlování výpočtů, možnosti paralelizace 13

14 Inicializace OpenGL ES - Android res.layout.main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <android android.opengl opengl.glsurfaceview android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/glsv glsv"/> </LinearLayout> IVS / Urychlování výpočtů, možnosti paralelizace 14

15 Inicializace OpenGL ES - Android IVS / Urychlování výpočtů, možnosti paralelizace 15

16 Kreslení v OpenGL ES Nemůžeme použít immediate mode (glvertex*()) Musíme použít Vertex attributes Vertex arrays Vertex shader Fragment shader IVS / Urychlování výpočtů, možnosti paralelizace 16

17 Vertex attributes OpenGL už nemá pevně danou sémantiku vrcholových dat Dříve byla pozice, normála, barva, sekundární barva + texcoords Místo toho se používají očíslované atributy glvertexattribpointer(uint attrib_number, // 0 uint num_dimensions, // 3 GLenum data_type, // GL_FLOAT bool is_normalized, // false uint stride, // 3 * sizeof(float) const void *data) // {1, 2, 3} glenablevertexattribarray(uint attrib_number) // 0 V Javě je místo const void* java.nio.buffer IVS / Urychlování výpočtů, možnosti paralelizace 17

18 Vertex arrays Data vrcholů musí být někde uložená Na lepších GPU použijeme Vertex Buffer Object (VBO) Ten však mobilní zařízení často nemají (sdílená RAM) Nebo použijeme jednoduchý buffer V C /C++ prostě float* V Javě java.nio.floatbuffer (nebo jiný typ) final float[] data = {1, 2, 3}; FloatBuffer buff = ByteBuffer.allocateDirect allocatedirect(data.length * 4). order(byteorder.nativeorder nativeorder()).asfloatbuffer asfloatbuffer(); buff.put put(data); buff.position position(0); GLES20.glVertexAttribPointer glvertexattribpointer(0, 3, GLES20.GL_FLOAT, false, 3 * 4, buff); GLES20.glEnableVertexAttribArray glenablevertexattribarray(0); IVS / Urychlování výpočtů, možnosti paralelizace 18

19 Vertex arrays Když máme připravená data ve vertex bufferu, můžeme je poslat k vykreslení gldrawarrays(glenum mode, // GL_TRIANGLES uint first, // 0 uint count) // 3 Když chceme kreslit složitější objekty kde se vrcholy opakují, přidáme druhý buffer s indexy (forma komprese) a voláme: gldrawelements(glenum mode, // GL_TRIANGLES uint count, // 3 GLenum data_type, // GL_UNSIGNED_INT const void *indices) // indexy IVS / Urychlování výpočtů, možnosti paralelizace 19

20 Vertex arrays Vykreslení trojúhelníku y 1 float buff[] = {0,.9f, 0,.9f, -.9f, 0, -.9f, -.9f, 0}; // pozice vrcholů ve 3D glvertexattribpointer(0, 3, GL_FLOAT, false, 3 * 4, buff); // pointer na data vertex atributu 0 (-0.9, -0.9) -1 0 (0, 0.9) (0.9, -0.9) x glenablevertexattribarray(0); // povolíme pole atributů 0 gldrawarrays(gl_triangles, 0, 3); // kreslíme tři vrcholy jako trojúhelník, začínáme nultým IVS / Urychlování výpočtů, možnosti paralelizace 20

21 Vertex arrays Vykreslení čtverce (-0.9, 0.9) y 1 float buff[] = { +.9f, +.9f, 0, +.9f, -.9f, 0, -.9f, -.9f, 0, -.9f, +.9f, 0}; // pozice vrcholů ve 3D (-0.9, -0.9) -1 0 (0.9, -0.9) (0.9, 0.9) x glvertexattribpointer(0, 3, GL_FLOAT, false, 3 * 4, buff); // pointer na atribut 0 glenablevertexattribarray(0); // povolíme pole atributů 0 gldrawarrays(gl_quads, 0, 4); // kreslíme 4 vrcholy jako čtverec, začínáme nultým IVS / Urychlování výpočtů, možnosti paralelizace 21

22 Vertex arrays Vykreslení čtverce (-0.9, 0.9) y 1 float buff[] = { +.9f, +.9f, 0, +.9f, -.9f, 0, -.9f, -.9f, 0, -.9f, +.9f, 0}; // pozice vrcholů ve 3D (-0.9, -0.9) -1 0 (0.9, -0.9) (0.9, 0.9) x glvertexattribpointer(0, 3, GL_FLOAT, false, 3 * 4, buff); // pointer na atribut 0 glenablevertexattribarray(0); // povolíme pole atributů 0 gldrawarrays(gl_quads, 0, 4); // kreslíme 4 vrcholy jako čtverec, začínáme nultým IVS / Urychlování výpočtů, možnosti paralelizace 22

23 Vertex arrays Bohužel už nemáme GL_QUADS, GL_QUAD_STRIP a GL_POLYGON Máme GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_STRIP a GL_TRIANGLE_FAN IVS / Urychlování výpočtů, možnosti paralelizace 23

24 Vertex arrays Vykreslení čtverce (-0.9, 0.9) y 1 float buff[] = { -.9f, +.9f, 0, +.9f, +.9f, 0, 0 (0.9, 0.9) x +.9f, -.9f, 0, +.9f, -.9f, 0, -.9f, -.9f, 0, -.9f, +.9f, 0}; // pozice vrcholů ve 3D glvertexattribpointer(0, 3, (-0.9, -0.9) -1 (0.9, -0.9) GL_FLOAT, false, 3 * 4, buff); // pointer na atribut 0 glenablevertexattribarray(0); // povolíme pole atributů 0 gldrawarrays(gl_triangles, 0, 6); // kreslíme 6 vrcholů jako trojúhelníky, začínáme nultým IVS / Urychlování výpočtů, možnosti paralelizace 24

25 Vertex arrays Vykreslení čtverce (-0.9, 0.9) y 1 float buff[] = { +.9f, +.9f, 0, +.9f, -.9f, 0, -.9f, -.9f, 0, -.9f, +.9f, 0}; // pozice vrcholů ve 3D int indices[] = {3, 0, 1, 1, 2, 3}; (0.9, 0.9) x 0 (-0.9, -0.9) -1 (0.9, -0.9) // permutace vrcholů, tvořící dva trojúhelníky glvertexattribpointer(0, 3, GL_FLOAT, false, 3 * 4, buff); // pointer na atribut 0 glenablevertexattribarray(0); // povolíme pole atributů 0 gldrawelements(gl_triangles, 6, GL_UNSIGNED_INT, indices); // kreslíme 6 vrcholů které vybíráme ze 4 pomocí pole indices IVS / Urychlování výpočtů, možnosti paralelizace 25

26 Vertex arrays Vykreslení čtverce (-0.9, 0.9) y 1 float buff[] = { -.9f, -.9f, 0, -.9f, +.9f, 0, +.9f, -.9f, 0, +.9f, +.9f, 0}; // pozice vrcholů ve 3D (-0.9, -0.9) -1 0 (0.9, -0.9) (0.9, 0.9) x glvertexattribpointer(0, 3, GL_FLOAT, false, 3 * 4, buff); // pointer na atribut 0 glenablevertexattribarray(0); // povolíme pole atributů 0 gldrawarrays(gl_triangle_strip, 0, 4); // kreslíme 4 vrcholy jako tristrip, začínáme nultým IVS / Urychlování výpočtů, možnosti paralelizace 26

27 Vertex arrays Vykreslení krychle const float p_box_vertices[] = { -1, -1, -1, +1, -1, -1, +1, -1, +1, -1, -1, +1, -1, +1, -1, +1, +1, -1, +1, +1, +1, -1, +1, +1}; const unsigned int p_box_indices[] = { 0, 1, 3, 2, 6, 1, 5, 0, 4, 3, 7, 6, 4, 5}; IVS / Urychlování výpočtů, možnosti paralelizace 27

28 Vertex arrays Vykreslení krychle const float p_box_vertices[] = { -1, -1, -1, +1, -1, -1, +1, -1, +1, -1, -1, +1, -1, +1, -1, +1, +1, -1, +1, +1, +1, -1, +1, +1}; const unsigned int p_box_indices[] = { 0, 1, 3, 2, 6, 1, 5, 0, 4, 3, 7, 6, 4, 5}; IVS / Urychlování výpočtů, možnosti paralelizace 28

29 Vertex Buffer Objekty (VBO) Paměť na GPU pro data vrcholů a indexů Napřed je nutné buffery naplnit (box z předchozí strany) int n_vertex_buffer, n_index_buffer; glgenbuffers(1, &n_vertex_buffer); glbindbuffer(gl_array_buffer, n_vertex_buffer); glbufferdata(gl_array_buffer, sizeof(p_box_vertices), p_box_vertices, GL_STATIC_DRAW); glgenbuffers(1, &n_index_buffer); glbindbuffer(gl_element_array_buffer, n_index_buffer); glbufferdata(gl_element_array_buffer, sizeof(p_box_indices), p_box_indices, GL_STATIC_DRAW); IVS / Urychlování výpočtů, možnosti paralelizace 29

30 Vertex Buffer Objekty (VBO) Pro nastavení vertex attributů je potřeba buffer nabindovat Adresu dat v bufferu nevíme, použijeme NULL (+ offset, pokud je třeba) Použít pro různé vertex atributy data z více bufferů je dovolené, někdy i žádoucí glbindbuffer(gl_array_buffer, n_vertex_buffer); glenablevertexattribarray(0); glvertexattribpointer(0, 3, GL_FLOAT, false, 3 * sizeof(float), NULL); // NULL ukazuje na začátek VBO // set vertex coordinate attribute glbindbuffer(gl_element_array_buffer, n_index_buffer); gldrawelements(gl_triangle_strip, 14, GL_UNSIGNED_INT, NULL); // NULL ukazuje na začátek VBO s indexy (element array) IVS / Urychlování výpočtů, možnosti paralelizace 30

31 Vertex Array Objekty (VAO) VAO je objekt, který si pamatuje nastavení vertex atributů Nastavení vyrobíme takto: int n_vao; glgenvertexarrays(1, &n_vao); glbindvertexarray(n_vao); glbindbuffer(gl_array_buffer, n_vertex_buffer); glenablevertexattribarray(0); glvertexattribpointer(0, 3, GL_FLOAT, false, 3 * 4, NULL); glbindbuffer(gl_element_array_buffer, n_index_buffer); glbindvertexarray(0); // zamezíme náhodnému poškození A v okamžiku potřeby si ho už jen vyvoláme: glbindvertexarray(n_vao); gldrawelements(gl_triangle_strip, 14, GL_UNSIGNED_INT, NULL); IVS / Urychlování výpočtů, možnosti paralelizace 31

32 Vertex shader Krátký program, který říká jak se mají interpretovat vertex atributy Každá instance jeden vertex dostane a jeden taky vyplivne precision highp float; // specifikace přesnosti attribute vec3 v_pos; // atributy - vstup z dat vrcholu varying vec3 v_color; // výstup - barva vrcholu uniform mat4 t_modelview_projection; // parametr shaderu - transformační matice void main() { gl_position = t_modelview_projection * vec4(v_pos, 1.0); // musíme zapsat pozici v_color = v_pos *.5 +.5; // vymyslíme barvu vrcholu pro fragment shader } IVS / Urychlování výpočtů, možnosti paralelizace 32

33 Fragment shader Krátký program, který říká jak vypočítat z interpolovaných souřadnic barvu Každá instance dostane interpolované atributy pro jeden pixel a na jejich základě může spočítat barvu nebo hloubku, případně pixel zahodit (discard) precision highp float; // specifikace přesnosti varying vec3 v_color; // vstup z vertex shaderu void main() { gl_fragcolor = vec4(v_color, 1.0); // zapíše výstupní barvu } IVS / Urychlování výpočtů, možnosti paralelizace 33

34 Práce se shadery Na začátku vygenerujeme shader objekty, nahrajeme do nich zdrojový kód shaderů (jako text) a zkompilujeme int p_shader[2]; // vertex a fragment char *p_src[2] = {ReadFile ReadFile( vs.txt ), ReadFile( fs.txt )}; for(int i = 0, n_temp; i < 2; ++ i) { p_shader[i] = glcreateshader((i == 0)? GL_VERTEX_SHADER : GL_FRAGMENT_SHADER); glshadersource(p_shader[i], 1, &p_src[i], NULL); glcompileshader(p_shader[i]); glgetshaderiv(p_shader[i], GL_COMPILE_STATUS, &n_temp); if(n_temp!= GL_TRUE) fail(); // chyba při kompilaci (glgetshaderinfolog glgetshaderinfolog()) free(p_src[i]); //!! } IVS / Urychlování výpočtů, možnosti paralelizace 34

35 Práce se shadery Vyrobíme program object a shadery k němu připojíme Nastavíme čísla vertex atributů (propojení s proměnnými VS) Slinkujeme program Najdeme čísla parametrů shaderu (uniform) int n_program_object = glcreateprogram(), n_temp; for(int i = 0, n_temp; i < 2; ++ i) glattachshader(n_program_object, p_shader[i]); glbindattriblocation(n_program_object, 0, v_pos ); gllinkprogram(n_program_object); glgetprogramiv(n_program_object, GL_LINK_STATUS, &n_temp); if(n_temp!= GL_TRUE) fail(); // chyba při linkování glgetprograminfolog() int n_mvp_uni = glgetuniformlocation(n_program_object, t_modelview_projection ); IVS / Urychlování výpočtů, možnosti paralelizace 35

36 Práce se shadery Při použití nastavíme program jako aktivní Nastavíme hodnoty různých parametrů (uniform) Matrix4f t_projection, t_modelview; t_projection.perspective Perspective(90, 4.0f / 3,.01f, 1000); t_modelview.identity Identity(); t_modelview.translate Translate(0, 0, -2); t_modelview.rotatex RotateX(30 * M_PI / 180); t_modelview.rotatey RotateY(10 * M_PI / 180); Matrix4f t_mvp = t_projection * t_camera_matrix; float *p_matrix = &t_mvp[0][0]; // OpenGL už nemá operace s maticemi, musíme počítat sami gluseprogram(n_program_object); gluniformmatrix4fv(n_mvp_uni, 1, GL_FALSE, p_matrix); // aktivujeme program a nastavíme matici IVS / Urychlování výpočtů, možnosti paralelizace 36

37 Výsledek IVS / Urychlování výpočtů, možnosti paralelizace 37

38 Textury Textury jsou dvourozměrné rastrové obrázky, jež lze v shaderu číst K texturám přistupujeme pomocí sampleru, je třeba nastavit číslo texturovací jednotky, ve které je textura nastavená OpenGL ES umí i 3D textury (GL_OES_texture_3D) int n_texture; glgentextures(1, &n_texture); glbindtexture(gl_texture_2d, n_texture); gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // zapneme mipmapy (trilineární) gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // zapneme bilineární filtr glteximage2d(gl_texture_2d, 0, GL_RGB, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, p_bitmap); // specifikujeme obraz glgeneratemipmap(gl_texture_2d); // spočítáme mipmapy IVS / Urychlování výpočtů, možnosti paralelizace 38

39 Textury Pro texturování tradičním způsobem je potřeba mít souřadnice textur (další vertex atribut) V shaderu ale můžeme souřadnice textury i nějak spočítat float buff[] = {-.9f, -.9f, 0, 0, 0, -.9f, +.9f, 0, 0, 1, +.9f, -.9f, 0, 1, 0, +.9f, +.9f, 0, 1, 1}; // 3D pozice vrcholů + 2D souřadnice textury (5 souřadnic) glvertexattribpointer(0, 3, GL_FLOAT, false, 5 * 4, buff); // pointer na atribut 0 glenablevertexattribarray(0); // povolíme pole atributů 0 glvertexattribpointer(1, 2, GL_FLOAT, false, 5 * 4, buff + 3); // pointer na atribut 1 glenablevertexattribarray(1); // povolíme pole atributů 1 IVS / Urychlování výpočtů, možnosti paralelizace 39

40 Textury Vertex shader precision highp float; // specifikace přesnosti attribute vec3 v_pos; attribute vec2 v_tex; // atributy - vstup z dat vrcholu varying vec3 v_texcoord; // výstup - souřadnice textury uniform mat4 t_modelview_projection; // parametr shaderu - transformační matice void main() { gl_position = t_modelview_projection * vec4(v_pos, 1.0); // musíme zapsat pozici } v_texcoord = v_tex; // souřadnici textury jen kopírujeme IVS / Urychlování výpočtů, možnosti paralelizace 40

41 Textury Fragment shader precision highp float; // specifikace přesnosti varying vec2 v_texcoord; // vstup z vertex shaderu uniform sampler2d n_sampler; // sampler pro čtení textury void main() { gl_fragcolor = texture2d(n_sampler, v_texcoord); // přečte texturu a zapíše ji na výstup } int n_sam_uni = glgetuniformlocation(n_program_object, n_sampler ); // najdi n_sampler... gluniform1i(n_sam_uni, 0); // textura je v texturovací jednotce 0 IVS / Urychlování výpočtů, možnosti paralelizace 41

42 Výsledek IVS / Urychlování výpočtů, možnosti paralelizace 42

43 Framebuffer objekty (FBO) Umožňují kreslení do textury Různé efekty, Voda, Zrcadla Stínové mapy Framebuffer objekt je kontejner pro framebuffery Renderbuffer objekt (kus paměťi pro uložení rastru) Textura (při kreslení do textury) V OpenGL ES poměrně omezený Jen jeden attachment pro color, musí být obsazený Nejsou k dispozici formáty pro depth textury Dokumentace glgenframebuffers(), glgenrenderbuffers() glbindframebuffer(), glbindrenderbuffer() glrenderbufferstorage() glframebufferrenderbuffer(), glframebuffertexture2d() IVS / Urychlování výpočtů, možnosti paralelizace 43

44 Framebuffer objekty (FBO) int n_fb, n_rb, n_tex; glgenframebuffers(1, &n_fb); glgenrenderbuffers(1, &n_rb); glbindframebuffer(gl_framebuffer, n_fb); glbindrenderbuffer(gl_renderbuffer, n_rb); glrenderbufferstorage(gl_renderbuffer, GL_DEPTH_COMPONENT16, 256, 256); // renderbuffer pro depth glframebufferrenderbuffer(gl_framebuffer, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, n_rb); // připojí rb glframebuffertexture2d(gl_framebuffer, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, n_tex, 0); // připojí texturu int n_status = glcheckframebufferstatus(gl_framebuffer); if(n_status!= GL_FRAMEBUFFER_COMPLETE) fail(); // zpravidla chyba programátora glviewport(0, 0, 256, 256); // potom je třeba vrátit původní // kreslení do textury glframebuffertexture2d(gl_framebuffer, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); // uvolnění textury pro kreslení IVS / Urychlování výpočtů, možnosti paralelizace 44

45 Literatura NVIDIA OpenGL SDK NeHe IVS / Urychlování výpočtů, možnosti paralelizace 45

46 The End Questions?

Android OpenGL. Práce s texturami

Android OpenGL. Práce s texturami Android OpenGL Práce s texturami Textura Obrázek, který jsme schopní nanášet na 3D objekty S použitím shaderů mnohem víc než to Může obsahovat jiné vlastnosti povrchu, než jen barvu (reliéf, lesklost,

Více

Android OpenGL. Pokročilé shadery

Android OpenGL. Pokročilé shadery Android OpenGL Pokročilé shadery Struktura programu Reálná aplikace zpravidla obsahuje více než jeden shader Kód pro inicializaci shaderu je dobré mít ve třídě (méně opisování stejného kódu) Shadery není

Více

Základy programování shaderů v OpenGL Část 2 - přenos dat

Základy programování shaderů v OpenGL Část 2 - přenos dat Základy programování shaderů v OpenGL Část 2 - přenos dat Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz

Více

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38 IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL Tomáš Milet Ústav počítačové grafiky a multimédíı Fakulta informačních technologíı Vysoké učení technické Brno IZG cvičení 6. - Zobrazování 3D scény

Více

Základy programování shaderů v OpenGL Část 2 - přenos dat

Základy programování shaderů v OpenGL Část 2 - přenos dat Základy programování shaderů v OpenGL Část 2 - přenos dat Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz

Více

Programování shaderů GLSL

Programování shaderů GLSL Programování shaderů GLSL Příklad vertex shader Tutor1-Flat Změna geometrie ve VS Nastavení z podle hodnoty získané z aplikace uniform App: loc=gl.glgetuniformlocation(sp,"ftime0_x"); gl.gluniform1f(loc,time);

Více

Připravil: David Procházka. Shadery

Připravil: David Procházka. Shadery 5. října 2015, Brno Připravil: David Procházka Shadery Počítačová grafika 2 Obsah přednášky Strana 2 / 29 Obsah přednášky 1 Obsah přednášky 2 Shadery 3 Shrnutí Obsah přednášky Strana 3 / 29 Obsah přednášky

Více

27. listopadu 2013, Brno Připravil: David Procházka

27. listopadu 2013, Brno Připravil: David Procházka 27. listopadu 2013, Brno Připravil: David Procházka Texturování Počítačová grafika 2 Obsah přednášky Strana 2 / 37 Obsah přednášky 1 Obsah přednášky 2 Texturování 3 Multum In Parvo 4 Modulace textury ve

Více

NPGR019. Geometry & tessellation shaders. MFF UK Praha. Vykreslování v OpenGL Tessellation shaders Geometry shaders Literatura

NPGR019. Geometry & tessellation shaders.   MFF UK Praha. Vykreslování v OpenGL Tessellation shaders Geometry shaders Literatura Hardware pro počítačovou grafiku NPGR019 Geometry & tessellation shaders Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012 Jan Horáček Geometry & Tesselation 1 / 42 Obsah Propojení Vykreslování Instancované

Více

Připravil: David Procházka. Vykreslování grafických primitiv

Připravil: David Procházka. Vykreslování grafických primitiv 24. září 2013, Brno Připravil: David Procházka Vykreslování grafických primitiv Počítačová grafika 2 Vykreslování grafických primitiv Strana 2 / 38 Obsah přednášky 1 Vykreslování grafických primitiv 2

Více

Fakulta informačních technologíı. Rendering Seminář 1. 1 / 28

Fakulta informačních technologíı. Rendering Seminář 1. 1 / 28 Rendering Seminář 1. Tomáš Milet, Tomáš Starka Ústav počítačové grafiky a multimédíı Fakulta informačních technologíı Vysoké učení technické Brno Rendering Seminář 1. 1 / 28 OpenGL OpenGL je architektura

Více

Připravil: David Procházka. Vertex Buffer Objects

Připravil: David Procházka. Vertex Buffer Objects 30. září 2013, Brno Připravil: David Procházka Vertex Buffer Objects Počítačová grafika 2 Obsah přednášky Strana 2 / 22 Obsah přednášky 1 Obsah přednášky 2 Vertex Buffer Objects 3 Příklady 4 Shrnutí Obsah

Více

Pokročilé programování v jazyce C pro chemiky (C3220) 3D grafika v knihovně Qt

Pokročilé programování v jazyce C pro chemiky (C3220) 3D grafika v knihovně Qt Pokročilé programování v jazyce C pro chemiky (C3220) 3D grafika v knihovně Qt Rozhraní pro 3D grafiku Běžné grafické knihovny zpravidla podporují pouze 2D grafický výstup Pro 3D grafický výstup jsou využívány

Více

Začínáme s vývojem pro Android

Začínáme s vývojem pro Android Pavel Petřek CTO Praha, 14. dubna 2010 Kdo je kdo Pavel Petřek Vývojář, přednášející, entusiasta světa chytrých telefonů (a velký jedlík) Spoluzakladatel Inmite Inmite Vývoj pro chytré telefony (Android:

Více

Základy OpenGL Josef Pelikán CGG MFF UK Praha. OpenGL / 34

Základy OpenGL Josef Pelikán CGG MFF UK Praha.  OpenGL / 34 Základy OpenGL 2003-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 34 Pokroky v hardware 3D akcelerace běžná i v konzumním sektoru hry, multimedia, i mobilní

Více

Připravil: David Procházka. Základy OpenGL

Připravil: David Procházka. Základy OpenGL 24. září 2013, Brno Připravil: David Procházka Základy OpenGL Počítačová grafika 2 Grafické knihovny Strana 2 / 25 Obsah přednášky 1 Grafické knihovny 2 Vykreslování rastrového obrazu 3 OpenGL aplikace

Více

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy)

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy) 2. přednáška Android projekt Manifest Activity Uživatelské rozhraní (základy) 2 Android Projekt - src Zdrojový kód v Javě Unikátní jméno balíčku Konvence: [země].[autor].[jméno aplikace] např.: cz.cvut.helloworld

Více

Textury. Petr Felkel, Jaroslav Sloup a Vlastimil Havran

Textury. Petr Felkel, Jaroslav Sloup a Vlastimil Havran Textury Petr Felkel, Jaroslav Sloup a Vlastimil Havran Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz Poslední změna: 25.3.2015 Textury

Více

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3.  Božetěchova 2, Brno Geekovo Minimum Nadpis 1 Nadpis 2 Nadpis 3 Počítačové Grafiky Jméno Adam Příjmení Herout Vysoké Vysoké učení technické učení technické v Brně, v Fakulta Brně, Fakulta informačních informačních technologií

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

Reflections, refractions, interreflections

Reflections, refractions, interreflections :: gs Reflections, refractions, interreflections Odrazy a lomy světla Grafické systémy David Sedláček 2004 :: fyzika Zákon odrazu Lom světla Snellův zákon Fresnelova rovnice poměr prošlého a odraženého

Více

Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16

Hierarchický model. 1995-2013 Josef Pelikán CGG MFF UK Praha. pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchický model 1995-2013 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 16 Hierarchie v 3D modelování kompozice zdola-nahoru složitější objekty se sestavují

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Textury. Petr Felkel, Jaroslav Sloup a Vlastimil Havran

Textury. Petr Felkel, Jaroslav Sloup a Vlastimil Havran Textury Petr Felkel, Jaroslav Sloup a Vlastimil Havran Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: felkel@fel.cvut.cz Poslední změna: 16.6.2016 Textury

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Základy programování shaderů v OpenGL část 1 program

Základy programování shaderů v OpenGL část 1 program Základy programování shaderů v OpenGL část 1 program Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

IB111 Programování a algoritmizace. Objektově orientované programování (OOP) IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T

Více

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

Více

Java - Kresba. 2/28/11 1/8 Java - kresba

Java - Kresba. 2/28/11 1/8 Java - kresba Java - Kresba Základní entity a jejich kresba ve třídě Graphics nemůžeme nastavit linii, šířku a typ, z grafických atributů jí můžeme nastavit pouze barvu Linie (čára)... drawline(int x1, int y1, int x2,

Více

Jazyk C# (seminář 9)

Jazyk C# (seminář 9) Jazyk C# (seminář 9) Pavel Procházka KMI 19. listopadu 2014 Motivace proč GTK# Moderní přístup k psaní GUI Základ (GTK+) je napsaný v C, ale podporuje celou řadu jazyků (Vala, Python, JavaScript, C#,...

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Programování grafiky ÚVOD

Programování grafiky ÚVOD Programování grafiky ÚVOD Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava

Více

Co je grafický akcelerátor

Co je grafický akcelerátor Co je grafický akcelerátor jednotka v osobním počítači či herní konzoli přebírá funkce hlavního procesoru pro grafické operace graphics renderer odlehčuje hlavnímu procesoru paralelní zpracování vybaven

Více

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Obor 01 - Matematika Gymnázium Dr. Karla Polesného, Znojmo Složené objekty, řezy těles tělesy, a jejich zobrazování Autor: Škola: Studijní obor: Vilém Otte Gymnázium Dr. Karla

Více

Programování v C++ 3, 3. cvičení

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

Transformace (v OpenGL) příklady a knihovna GLM

Transformace (v OpenGL) příklady a knihovna GLM Transforace (v OpenGL) příklady a knihovna GLM Petr Felkel, Jaroslav Sloup Katedra počítačové grafiky a interakce, ČVUT FEL ístnost KN:E-413 (Karlovo náěstí, budova E) E-ail: felkel@fel.cvut.cz Poslední

Více

Projekt Obrázek strana 135

Projekt Obrázek strana 135 Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy

Více

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND

Více

Vektorové mapy. Ing. Martin Bak, vedoucí týmu vývoje martin.bak@firma.seznam.cz

Vektorové mapy. Ing. Martin Bak, vedoucí týmu vývoje martin.bak@firma.seznam.cz Vektorové mapy Ing., vedoucí týmu vývoje martin.bak@firma.seznam.cz Vektorové mapy Mobilní tým backend technologie, nástroje Cesta vektorů do aplikace úpravy, optimalizace kódování / komprese Jak to celé

Více

Konstruktory a destruktory

Konstruktory a destruktory Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,

Více

Obsah. Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem. Toast. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant

Obsah. Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem. Toast. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant Obsah Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem Toast 2 4 oncreate(bundle savedinstancestate) { } Zavolá se při každém vytvoření activity (i při otočení displeje)

Více

Android OpenGL. Vykreslování terénu

Android OpenGL. Vykreslování terénu Android OpenGL Vykreslování terénu Terén Většinou je reprezentovaný pomocí 2D výškové mapy Na běžných GPU lze výškovou mapu číst přímo ve vertex shaderu, mobilní GPU však tuto funkci nepodporují Nezbývá

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND

Více

PROGRAMOVATELNÉ SHADERY V OPENGL

PROGRAMOVATELNÉ SHADERY V OPENGL VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND

Více

Uživatelské rozhraní. Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 11/29/11

Uživatelské rozhraní. Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 11/29/11 Uživatelské rozhraní Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 2 FrameLayout Nejjednodušší a nejzákladnější layout Prvky Nelze nijak pozicovat Všechny

Více

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.

Více

Objektově orientované programování

Objektově orientované programování 10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh

Více

Programování grafiky ÚVOD

Programování grafiky ÚVOD Programování grafiky ÚVOD Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz S použitím materiálů Bohuslava Hudce, Jaroslava

Více

Př. další použití pointerů

Př. další použití pointerů Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:

Více

Úvod do GPGPU J. Sloup, I. Šimeček

Úvod do GPGPU J. Sloup, I. Šimeček Úvod do GPGPU J. Sloup, I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PRC, LS2010/11, Predn.3 Příprava studijního programu

Více

Programování v C++ 2, 4. cvičení

Programování v C++ 2, 4. cvičení Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva

Více

Textury v real-time grafice. 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz

Textury v real-time grafice. 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz Textury v real-time grafice 2004-2005 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/~pepca/ Josef.Pelikan@mff.cuni.cz Textury vylepšují vzhled povrchu těles modifikace barvy ( bitmapa ) dojem hrbolatého

Více

3D akcelerátory historie a architektura

3D akcelerátory historie a architektura 3D akcelerátory historie a architektura 2003-2010 Josef Pelikán, MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz NPGR019, hwintro.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca

Více

Obsah. LayoutInflater. UI model KeyEvent View Tvorba vlastních komponent Canvas Matrix Vlastní EditText

Obsah. LayoutInflater. UI model KeyEvent View Tvorba vlastních komponent Canvas Matrix Vlastní EditText Obsah UI model KeyEvent View Tvorba vlastních komponent Canvas Matrix Vlastní EditText LayoutInflater Dotykové události MotionEvent Dynamické přidání View 2 UI model Androida View Základní stavební kámen

Více

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz

XNA Game Studio 3.1. Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz XNA Game Studio 3.1 Tomáš Herceg Microsoft Most Valuable Professional Microsoft Student Partner http://www.vbnet.cz Agenda Úvod, motivace Struktura XNA Content pipeline Součásti XNA Paleta funkcí Herní

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Nvidia CUDA Paralelní programování na GPU

Nvidia CUDA Paralelní programování na GPU Mendelova univerzita v Brně Provozně ekonomická fakulta Nvidia CUDA Paralelní programování na GPU 2014 O čem to bude... Trocha historie Shadery Unifikace GPGPU CUDA Využití GPGPU GPU a jeho Hardware Nvidia

Více

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4 Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first

Více

Hardware pro počítačovou grafiku NPGR019

Hardware pro počítačovou grafiku NPGR019 Hardware pro počítačovou grafiku NPGR019 3D akcelerátory - historie a architektura Josef Pelikán Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012 Pokroky v hardware 3D akcelerace běžná i v konzumním

Více

Masivně paralelní zpracování obrazu v prostředí systému VisionLab. 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz

Masivně paralelní zpracování obrazu v prostředí systému VisionLab. 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz Masivně paralelní zpracování obrazu v prostředí systému VisionLab 25. 9. 2013 Liberec Roman Cagaš, rc@mii.cz Moravské přístroje a.s. - oblasti vývoje a výroby Prostředí pro vývoj aplikací Software pro

Více

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA HISTORIE GPU GPU = graphics processing unit jde o akcelerátory pro algoritmy v 3D grafice a vizualizaci mnoho z nich původně vzniklo pro účely počítačových

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

PB161 Základy OOP. Tomáš Brukner

PB161 Základy OOP. Tomáš Brukner PB161 Základy OOP Tomáš Brukner Sylabus - Co je to OOP? Jaké jsou základní principy OOP? Jak se projevují v C++? https://cs.wikipedia.org/wiki/strahovská_knihovna SELECT * FROM books WHERE pages < 250

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

Abstraktní datové typy

Abstraktní datové typy Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

PB161 Programování v jazyce C++ Přednáška 10

PB161 Programování v jazyce C++ Přednáška 10 .. PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 23. listopadu 2015 PB161 přednáška 10: šablony 23. listopadu 2015 1 / 29 K zamyšlení Jaký je rozdíl mezi new int[10] a new int[10]()?

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti

Více

Datové struktury. alg12 1

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více

JSR 184 - tutorial 2 Transformace v JSR-184

JSR 184 - tutorial 2 Transformace v JSR-184 JSR 184 - tutorial 2 Transformace v JSR-184 Cíl tutorialu: - naučit vás měnit pozici/ rotaci/ velikost objektu Tak jdeme na to: V minulém tutorialu (Úvod do JSR-184) jsme si ukázali, jak námi vytvořenou

Více

Programovatelné shadery a jazyk Cg. Petr Kmoch

Programovatelné shadery a jazyk Cg. Petr Kmoch Programovatelné shadery a jazyk Cg Petr Kmoch Historie Softwarové výpoèty Pevná pipeline Volitelné moduly Programovatelné shadery 11.12.2002 Petr Kmoch, MFF UK 2 Grafická pipeline Triangulace scény Vrcholy

Více

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových

Více

Android 100% Java telefon. Petr Musil

Android 100% Java telefon. Petr Musil Android 100% Java telefon Petr Musil 1 Vytvoření aplikace Prostředí pro vývoj Android SDK http://developer.android.com/sdk/index.html ADT plugin pro Eclipse http://developer.android.com/sdk/eclipse-adt.html

Více

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 12. Přednáška. Zjišťování polohy Google Mapy OverlayItem Zálohování.

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 12. Přednáška. Zjišťování polohy Google Mapy OverlayItem Zálohování. 12. Přednáška Zjišťování polohy Google Mapy OverlayItem Zálohování Data Backup 2 3 Zjišťování polohy K získávání informací o poloze slouží třída LocationManager Typicky se zavolá její metoda requestlocationupdates()

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY Strana 1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV AUTOMATIZACE A INFORMATIKY FACULTY OF MECHANICAL ENGINEERING INSTITUTE OF AUTOMATION AND COMPUTER

Více

ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014

ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014 Zadání projektu Texturování Základy počítačové grafiky (IZG) ak. rok 2013/2014 Michal Španěl, spanel@fit.vutbr.cz 24.2.2014 1 První seznámení Cílem projektu je pochopení praktických souvislostí témat přednášek

Více

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200 PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200 Bc.Adam Berger Ber 208 Historie a předchůdci G200 V červnu roku 2008 spatřila světlo světa nová grafická karta od společnosti Nvidia. Tato grafická karta opět

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016 ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Jazyk C# (seminář 3)

Jazyk C# (seminář 3) Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. haptického pera

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. haptického pera Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Bakalářská práce Ohmatávání a modifikace geometrických modelů pomocí haptického pera Plzeň, 2013 Barbora

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více