TAM. Prezentace přednášek. Ústav počítačové grafiky a multimédií
|
|
- Vít Němeček
- před 5 lety
- Počet zobrazení:
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 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íceAndroid 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íceZá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íceFakulta 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íceZá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íceProgramová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ícePř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íce27. 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íceNPGR019. 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ícePř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íceFakulta 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ícePř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ícePokroč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íceZačí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íceZá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ícePř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)
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íceTextury. 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íceGeekovo 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) 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íceADT/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íceReflections, 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íceHierarchický 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íceMichal 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íceTextury. 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íceJazyk 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ícePokroč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ícePREPROCESOR 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íceZá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íceTeoretické 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íceMichal 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íceIB111 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íceProgramová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íceObsah 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ícePrincipy 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íceStatické 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íceJava - 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íceJazyk 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íceProgramová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íceProgramová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íceCo 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íceSTŘ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íceProgramová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íceDynamicky 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íce20. 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íceJava 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íceTransformace (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íceProjekt 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íceFAKULTA 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íceVektorové 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íceKonstruktory 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íceObsah. Ž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íceAndroid 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íceVYSOKÉ 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ícePROGRAMOVATELNÉ 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íceUž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íceDatové 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íceObjektově 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íceProgramová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ícePř. 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 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íceProgramová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íceTextury 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íce3D 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íceObsah. 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íceXNA 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íceDefinice 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íceAlgoritmizace 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íceNvidia 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íceFronta (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íceHardware 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íceMasivně 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íceGPU 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
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ícePB161 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ícePB161 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ícePB161 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íceAbstraktní 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íce8 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ícePB161 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íceMichal 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íceBridge. 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íceZá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íceDatové 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íceTabulka 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íceJSR 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íceProgramovatelné 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ícePB161 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íceAndroid 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íce11/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íceVYSOKÉ 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íceak. 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ícePŘ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íceMartin 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íceVí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íceMichal 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íceJazyk 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íceDefinice 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íceZá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ícetypová 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