Základy programování shaderů v OpenGL Část 2 - přenos dat
|
|
- Petr Rohla
- před 7 lety
- Počet zobrazení:
Transkript
1 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) felkel@fel.cvut.cz S použitím materiálů Vlastimila Havrana Poslední změna:
2 Obsah přednášky Minule Tok dat v OpenGL se shadery Překlad a sestavení programu Struktura programu typu shader Dnes Předávání dat a parametrů do programu typu shader Grafická primitiva Příklady zdrojových kódů pro shadery
3 Předávání parametrů shaderům ATRIBUTY vrcholů (vstupy VS) UNIFORM (společné proměnné) Vertex Data Vertex Shader Primitive Setup and Rasterization Fragment Shader Blending Pixel Data Texture Store OpenGL verze 3.1
4 Atributy vrcholu a proměnné uniform UNIFORM (společné proměnné) ATRIBUTY vrcholu 0 1 n vertex shader 0 1 n fragment shader GPU attriblocation (index vstupu VS) uniformlocation (index společné proměnné uniform) 4
5 Propojení dat vrcholů na vstupy VS Atributy vrcholů (hodnoty uložené pro každý vrchol) tvoří vstupy vertex shaderů (xyz, rgb, n, ) v shaderu označeny kvalifikátorem in in vec3 VertexPosition; pro každý vrchol se spustí jeden VS VS dostane data právě pro jeden vrchol aplikace musí předem připravit hodnoty pro tyto atributy: uloží hodnoty pro všechny vrcholy do tzv. buffer objektu (VBO) popíše, jak jsou v bufferu uloženy array buffer (VAO) připojí obsah bufferu na vstupní proměnné attriblocation 5
6 Objekty v OpenGL OpenGL využívá princip objektů Všechny objekty mají celočíselné jméno (ID, handle, ) Pomocí něj aktivujeme příslušný objekt či jej použijeme pro připojení k jinému objektu. Z hlediska aplikace je struktura objektu neznámá Jméno slouží k předávání objektu funkcemi API buffer jako pojmenovaný blok bytů v paměti vertex array jako kolekce bufferů a stavu OpenGL spojených se vstupem vrcholů s atributy do Vertex Shaderu (jak jsou v bufferech uloženy souřadnice a atributy a jak je propojit na vstupy VS) textura shader a program 7
7 Práce s objekty v OpenGL Při vytváření objektu 1. glgenxxx vytvoření jmen objektů --> vždy typ GLuint 2. glbindxxx (target,) object_name 3. Copy data - např. glteximage2d, glbufferdata,,, 4. + nastavení stavu OpenGL Při použití glbindxxx (target,) object_name Pokud objekt nepotřebujeme gldelete 8
8 Předávání dat mezi GPU a CPU v OpenGL Probíhá prostřednictvím těchto objektů Buffer Objekty (pro vrcholy nazýváme VBO) Array Objekty (pro vrcholy nazýváme VAO) VBO je principiálně jen jednorozměrné pole dat / bajtů - data jsou svázána s vrcholy, - souřadnice, normály, texturovací souřadnice, VAO obsahuje jeden čí více VBOs a dává interpretační strukturu datům v nich uložených,(co který bajt znamená) může obsahovat buffer s indexy vrcholů 10
9 Další obsah přednášky Postup před vykreslením jednoho snímku Buffer objekty Vertex array objekty Použití a nastavení pro zobrazení dat 11
10 Postup před vykreslením jednoho snímku Příprava (1x) Nastaví se stav OpenGL Připraví se balíky dat přenos do GPU (buffery) Připraví se informace o obsahu bufferů a jejich propojení na vstupy vertex shaderů (vertex arrays) Vykreslování (např. 60x za sekundu) viz dále Smazání obrazovky Propojení vstupů VS (bind vertex array) Spustí se vykreslení (draw) 12
11 Data v hlavní paměti versus data na GPU [ 13
12 (Vertex) Buffer objekty Slouží k přístupu do paměti spravované OpenGL obvykle na GPU (CPU = klient, GPU = server) Je to blok bajtů bez dalších informací o jejich struktuře Typický postup vytvoření: float buffer_data [] = {-0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f}; GLuint buffer_name; // často jen buffer // slajd glgenbuffers(1, &buffer_name ); // 1 glbindbuffer(target, buffer_name ); // 2 glbufferdata(target, sizeof(buffer_data), buffer_data, GL_STATIC_DRAW); // 3 glbindbuffer(target, 0); target je způsob interpretace bufferu, např. GL_ARRAY_BUFFER, ale další jsou GL_ELEMENT_ARRAY_BUFFER pro indexy, [Groff] GL_PIXEL_PACK_BUFFER, or GL_PIXEL_UNPACK_BUFFER pro pixely 14
13 Pomocná funkce na vytvoření bufferů Pro vytváření objektů bufferů se může hodit tato funkce, která vrací jméno vytvořeného bufferu static GLuint make_buffer( GLenum target, // typ bufferu GLsizei buffer_size const void *buffer_data,// void pointer ) { GLuint buffer; glgenbuffers(1, &buffer); // 1 glbindbuffer(target, buffer); // 2a glbufferdata(target, buffer_size,// 3 buffer_data, GL_STATIC_DRAW); } glbindbuffer(target, 0); // 2b return buffer; // vrací jméno bufferu - ID [Groff] 15
14 Buffer Objekty 1. generování jmen void Vrací glgenbuffers( n nepoužitých GLsize jmen n, bufferů GLuint * buffers); // 1 Vygeneruje n jmen bufferů, jméno je číslo typu Gluint Uloží je do pole buffers glgenbuffers(1,&buffer); // 1 Vytvoří jedno jméno bufferu void gldeletebuffers( GLsize n, const GLuint * buffers); Uvolní n jmen bufferů v poli buffers a smaže je Přesněji pokud někdo buffer používá, jen ho označí jako smazaný. Smaže se až s posledním odkazem 16
15 Buffer Objekty 2. propojení jména s cílem void glbindbuffer(enum target, GLuint buffer); // 2 Propojí jméno objektu buffer s OpenGL cílem target target ARRAY_BUFFER ELEMENT_ARRAY_BUFFER target se používá i jako parametr příkazů OpenGL Propojení ovlivňuje i další příkazy, které target jako parametr nemají, ale využívají jím nastaveného stavu (např. gldrawarrays pracuje s navázanými vrcholy, glvertexattribpointer nastavuje připojený buffer ve VAO) Volá se podruhé při vykreslování před použitím bufferu Propojení se zruší parametrem 0 glbindbuffer(target,0); Účel Atributy vrcholů (Vertex array) Indexy do pole vrcholů // 2b 17
16 Buffer Objekty 3. předání dat void glbufferdata(enum target, sizeiptr size, const void * data, enum usage); // 3 Okopíruje data z klientské paměti do paměti buffer objektu usage rada, kam data dát STATIC_... DYNAMIC_... STREAM_ _DRAW _READ _COPY Účel Data nehodláme měnit (rigidní objekty) Data budeme měnit často Data budeme měnit pravidelně (animace) CPU -> GPU GPU -> CPU GPU GPU Pro vertex a element arrays tedy typicky GL_STATIC_DRAW glbufferdata(target, buffer_size, buffer_data, GL_STATIC_DRAW); // 3 18
17 Vertex Array Object (VAO) Sdružuje kompletní informace o atributech vrcholů potřebné pro předávání dat vertex shaderům Připojené buffery se souřadnicemi a dalšími atributy Informace o struktuře dat v bufferech (jak jsou data v bufferech poskládána) Navázání na vstupy vertex shaderů (location) V nových verzích OpenGL je nutno VAO explicitně definovat (gen, bind, ) a před vykreslením se provede jen propojení (bind) Poznámka: v OpenGL ES a WebGL VAO není (extenze) ve starší verzi OpenGL existoval implicitní VAO s číslem 0 propojení se vstupy (glbindbuffer a glvertexattribpointer) se dělalo v metodě draw() [Groff] 19
18 Vertex Array Object (VAO) - vytvoření GLuint vertex_array; glgenvertexarrays( 1, &vertex_array ); // 4 glbindvertexarray( vertex_array ); // 5a // buffery s atributy vrcholů vytvořeny dříve Bind, BufferData glbindbuffer( GL_ARRAY_BUFFER, positionbuffer ); glenablevertexattribarray( pos_location ); // 6 glvertexattribpointer( pos_location, 2,GL_FLOAT, GL_FALSE,0,0);// 7 glbindbuffer( GL_ARRAY_BUFFER, colorbuffer ); glenablevertexattribarray(color_location); // 6 glvertexattribpointer(color_location,3,gl_float,gl_false,0,0); // 7 // pouze jeden buffer s indexy vrcholů! glbindbuffer( GL_ELEMENT_ARRAY_BUFFER, elementbuffernamehouse2 ); glbindvertexarray( 0 ); // 5b detach 20
19 Vertex Array Object 4. generování jmen void Vrací glgenvertexarrays( n nepoužitých jmen GLsize bufferů n, GLuint * arrays); // 4 Vytvoří n jmen polí v polí arrays void gldeletevertexarrays (GLsize n, const GLuint *arrays ); Uvolní n jmen polí v polí arrays a jejich obsah smaže 21
20 Vertex Array Objects 5. připojení void glbindvertexarray (GLuint array); // 5 Připojí pole se jménem array Při prvním volání se objekt pole vytvoří Volá se podruhé při vykreslování před použitím v poli definovaných bufferů a v nich uložených atributů vrcholů (nemá parametr target existuje jediný typ vertex array) Připojení se zruší parametrem 0 glbindvertexarray(0); // 5b 22
21 6. Povolení pole atributů s daným indexem (location) void glenablevertexattribarray(gluint index); // 6 Povolí atribut (location) s indexem index Každý vrchol dostane na vstup vertex shaderu jiná data odpovídající jeho umístění v bufferu void gldisablevertexattribarray(gluint index); Zakáže atribut (location) s indexem index Všechny vrcholy dostávají konstantní vstupní hodnotu Implicitně (0.0, 0.0, 0.0, 1.0) Nebo příkazem glvertexattrib*(gluint index, TYPE value); 23
22 7. Popis pole atributů vrcholů (co je ve vertex bufferu pro location uloženo a kde) void glvertexattribpointer(gluint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); // 7 index atributu ve vertex shaderu (location atributové proměnné) size -počet složek atributu (1, 2, 3 nebo 4) type - datový typ složek (GL_BYTE, GL_FLOAT, ) normalized převádí čísla na interval 0.0f...1.0f stride - offset mezi atributy v bufferu pointer - offset první hodnoty v rámci bufferu přetypovaný na (void *) pro data od začátku bufferu (void*)0 24
23 Postup vykreslení jednoho snímku Příprava (1x) Nastaví se stav OpenGL Připraví se balíky dat přenos do GPU (buffery) Připraví se informace o obsahu bufferů a jejich propojení na vstupy vertex shaderů (vertex arrays) Vykreslování (např. 60x za sekundu) Smazání obrazovky Propojení vstupů VS (bind vertex array) Spustí se vykreslení (draw) 25
24 Dva způsoby vykreslování geometrických primitiv Data o vrcholech jsou uložena v buffer objektech, tj. v polích v adresovém prostoru serveru (obvykle v paměti GPU viz glbufferdata) Jedním příkazem lze vybrat část z nich a vykreslit je (např. jednu stěnu krychle) gldrawarrays() vykreslí n po sobě jdoucích vrcholů gldrawelements() vykreslí n po vrcholů na přeskáčku, podle pole indexů vrcholů Před vykreslováním je nutno informovat OpenGL o tom, jak jsou data v polích poskládána, jak jsou propojena se vstupy vertex shaderů a v jakém pořadí se budou vrcholy uložené v datech vykreslovat - to je uloženo ve Vertex Array glbindvertexarray( ) => připojit Vertex Array 26
25 Vykreslení n po sobě jdoucích vrcholů void gldrawarrays(glenum mode, GLint first, GLsizei count); Vykreslí count po sobě jdoucích vrcholů ze všech povolených polí Začne na vrcholu s indexem first Poslední vykreslený má index first+count-1 mode udává typ primitiva GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES 27
26 Vykreslení n po vrcholů napřeskáčku void gldrawelements(glenum mode, GLsizei count, GLenum type, void *indices); Vykreslí count vrcholů ze všech připojených polí ARRAY_BUFFER, jejichž indexy jsou uloženy v připojeném poli indexů ELEMENT_ARRAY_BUFFER na offsetu indices (dříve to byl opravdu odkaz na pole indexů v klientské paměti, proto se offset přetypovává na odkaz (void*) offset) type udává datový typ indexů a může nabývat hodnot GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT mode udává typ primitiva GL_POINTS. GL_LINES, 28
27 Použití vertex arrays glbindvertexarray( vertex_array );// 5 gldrawarrays( GL_LINES, 6, 666 ); //od 6.indexu //666 hodnot(indexů) glbindvertexarray( 0 ); // 5 29
28 Souřadnicový systém v OpenGL - základy Pravotočivá souřadná soustava y axis x axis z axis Souřadnicový systém zobrazované plochy: (0,h) (w,h) Levý dolní roh obrazovky (0,0) (w,0) 30
29 Souřadnice vrcholů Souřadnice vrcholů Typicky se s nimi pracuje v polích vrcholů Předávají se přes ANSI C pole do tzv. vertex buffer objektů Počet složek souřadnic 2 2D souřadnice (x, y), implicitně z = 0 a w = 1 3 3D souřadnice (x, y, z), implicitně w = 1 4 homogenní souřadnice (x, y, z, w) reprezentují 3D souřadnice podle vztahu (x/w, y/w, z/w) je to vhodnější pro transformace, detaily později. Vnitřní reprezentace vrcholů v homogenních souřadnicích (x, y, z, w). specifikace (x, y, z) reprezentace (x, y, z, 1) (x, y) reprezentace (x, y, 0, 1) 31
30 Grafická primitiva v OpenGL GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP V5 V4 V0 V2 V4 V4 V3 V2 V2 V0 V1 GL_TRIANGLES V3 V1 V3 GL_TRIANGLE_STRIP V5 V0 GL_TRIANGLE_FAN V1 PLUS (pro geometry shader a teselace): GL_LINES_ADJACENCY GL_TRIANGLES_ADJACENCY GL_TRIANGLE_STRIP_ADJACENCY GL_PATCH_VERTICES 32
31 Body GL_POINTS Vrcholy jsou specifikovány v poli, vrcholů je libovolný počet Lze specifikovat velikost bodu v počtu pixelů Nezáleží tedy na vzdálenosti bodu ke kameře, velikost bodu bude vždy stejná. v0 v2 v5 v1 v4 v3 33
32 Velikost bodu void glpointsize(glfloat size); nastaví šířku zobrazovaných bodů v pixelech, šířka musí být větší než 0, implicitní hodnota je 1.0 Je-li však nastaveno glenable(gl_program_point_size), příkaz se ignoruje a velikost každého bodu nastavuje vertex shader v proměnné gl_pointsize Dříve možnost zapnout aliasing glenable(gl_point_smooth) Nyní všechny body jako čtverce s texturou point sprite antialiasing disabled antialiasing enabled 34
33 Samostatné úsečky GL_LINES Sekvence samostatných úseček Úsečka je mezi v0 a v1, mezi v2 a v3, mezi v4 a v5 atd. Je-li počet vrcholů n lichý, poslední vrchol je ignorován. v0 v2 v5 v1 v4 v3 n is 6 (even) 35
34 Lomená čára GL_LINE_STRIP Úsečka z v0 do v1, potom z v1 do v2, atd., konečně pak z vn-2 to vn-1 Celkem n-1 line úseček, pokud n=1, nekresli nic Nejsou stanovena žádná omezení na hodnoty vrcholů, úsečky se mohou protínat a body opakovat v0 v2 v5 v1 v4 v3 36
35 Uzavřená posloupnost úseček GL_LINE_LOOP Ozavřená lomená čára tj., jako GL_LINE_STRIP, plus poslední úsečka z vn-1 do v0 uzavírá smyčku v0 v2 v5 v1 v4 v3 37
36 Trojúhelník GL_TRIANGLES zobrazí sekvenci trojúhelníků pomocí vrcholů v0, v1, v2, pak trojúhelník v3, v4, v5, atd. Orientace je dána pořadím vrcholů, ne např. normálou. Pokud n není násobkem tří, je poslední vrchol či oba poslední dva vrcholy ignorovány v2 v3 v5 v4 v0 v1 39
37 TRIANGLE STRIP GL_TRIANGLE_STRIP Zobrazí sekvenci trojúhelníků o vrcholech trojúhelník v0, v1, v2, pak trojúhelník v2, v1, v3 (pozor na pořadí), pak v2, v3, v4, atd. Uspořádání vrcholů zajistí správnou orientaci každého trojúhelníku, takže je správně vykreslena k pozorovateli přivrácená část povrchů objektů n musí být větší nebo rovno třem Dochází k úspoře počtu vrcholů kolik vrcholů je potřeba na jeden trojúhelník, pokud n by bylo velké číslo? v0 v2 v4 v1 v3 v5 40
38 TRIANGLE FAN GL_TRIANGLE_FAN Podobné jako je GL_TRIANGLE_STRIP, ale pořadí vrcholů pro první trojúhelník je v0, v1, v2, pak trojúhelník v0, v2, v3, pak trojúhelník v0, v3, v4, atd. v4 v3 v2 v0 v1 41
39 PATCH Jediné vstupní primitivum pro teselační shadery N-tice vrcholů nebo řídících bodů nějaké plošky GPU pak generuje jemnější reprezentaci např. podle vzdálenosti plošky od pozorovatele (LOD) Viz 2 virchor.sourceforge.net 42
40 Příklady různého uložení hodnot ve VBO 1. Jeden atribut v jednom VBO 2. Dva atributy v jednom VBO za sebou 3. Dva atributy v jednom VBO prokládaně 4. Dva atributy, každý v jiném VBO 43
41 1. Příklad Jeden atribut v jednom VBO příprava dat static const Glfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f }; static const GLushort g_element_buffer_data[] = { 0,1,2,3 }; vertex_buffer = make_buffer( //souřadnice vrcholů GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data ); element_buffer = make_buffer( // indexy vrcholů GL_ELEMENT_ARRAY_BUFFER, sizeof(g_element_buffer_data), g_element_buffer_data ); [Groff] 44
42 1. Příklad rozvinutý make_buffer vertex_buffer = make_buffer( GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data ); Provede tedy tyto akce (bez pomocné proměnné): glgenbuffers(1, &vertex_buffer ); // 1 glbindbuffer(gl_array_buffer, vertex_buffer ); // 2a glbufferdata(gl_array_buffer, // 3 sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW ); glbindbuffer(gl_array_buffer, 0); // 2b 45
43 1. Příklad navázání před vykreslením pos_location = glgetattriblocation(program, "position"); glgenvertexarrays( 1, &vertex_array ); ); // 4 glbindvertexarray( vertex_array ); ); // 5 glbindbuffer(gl_array_buffer, vertex_buffer); // 2 glenablevertexattribarray(pos_location); // 6 glvertexattribpointer( // 7 pos_location, /* VS attribute index */ 2, /* size */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*2, /* stride */ (void*)0 /* array buffer offset */ ); glbindvertexarray( 0 );//4b [Groff] 46
44 1. Příklad - vykreslení glbindvertexarray( vertex_array ); [Groff] gldrawelements( GL_TRIANGLE_STRIP, /* mode */ 4, /* count */ GL_UNSIGNED_SHORT, /* type */ (void*)0 /* element array buffer offset */ ); glbindvertexarray(0); 47
45 1. Příklad tok geometrických dat na GPU Buffer Object with vertex coordinates Primitive assembly + index 0 index 1 index 2 index 3 in vec4 position; in vec4 position; in vec4 position; Přenos dat z buffer object do vertex shader Přenos dat z vertex shader do jednotky rasterizace 48
46 2. Příklad přidání druhého atributu v jednom VBO static const Glfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, 0.0f, 1.0f, 1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, vrcholy 1.0f, 1.0f 0.0f, 1.0f, 0.0f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, barvy 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, }; Doplníme proměnnou ve vertex shaderu A její navázání attributes.position = glgetattriblocation(program, "position"); // VS input attributes.color = glgetattriblocation(program, color"); // VS input [Groff] 49
47 2. Příklad - navázání dvou atributů za sebou glbindbuffer(gl_array_buffer, vertex_buffer); glvertexattribpointer( attributes.position, /* attribute */ 4, /* size - # components */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*4, /* stride */ (void*)0 /* array buffer offset */ ); glvertexattribpointer( attributes.color, /* attribute */ 4, /* size */ GL_FLOAT, /* type */ Přeskočit 4 vrcholy GL_FALSE, /* normalized */ sizeof(glfloat)*4, /* stride */ (void*) sizeof(glfloat)*4*4 /* array buffer offset */ ); [Groff] 50
48 2. Předání dat vrcholu do vertex shaderu Buffer Object with vertex coordinates and color Vertex Shaders index 0 index 1 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position index 2 index 3 index 0 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position index 1 index 2 index 3 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position location 51
49 3. Př. Dva atributy v jednom VBO prokládaně (interleaved) static const Glfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 0.5f, 0.0f, 1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, }; vrcholy barvy Prokládání je většinou ta nejrychlejší varianta Doplníme proměnnou ve vertex shaderu to je stejné A její navázání attributes.position = glgetattriblocation(program, "position"); // VS input attributes.color = glgetattriblocation(program, "color"); // VS input 52
50 3. Příklad - použití i druhého atributu glbindbuffer(gl_array_buffer, vertex_buffer); glvertexattribpointer( attributes.position, /* attribute */ 4, /* size */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*8, /* stride */ (void*)0 /* array buffer offset */ ); glvertexattribpointer( attributes.color, /* attribute */ 4, /* size */ GL_FLOAT, /* type */ GL_FALSE, /* normalized */ sizeof(glfloat)*8, /* stride */ (void*) sizeof(glfloat)*4 /* array buffer offset */ ); [Groff] 53
51 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 1. create and bind vertex array object // variable to hold our handle to the vertex array object GLuint vaohandle; // create and bind to a vertex array object (stores the relationship between the buffers and the input attributes) glgenvertexarrays( 1, &vaohandle ); glbindvertexarray(vaohandle); // 2. set the data as arrays float positiondata[] = { -0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f, 0.0f, 0.8f, 0.0f }; float colordata[] = { 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f }; // coordinates of triangle vertices // colors of triangle vertices 54
52 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 3. Create and bind the buffer objects, populate them with data GLuint vbohandles[2]; glgenbuffers(2, vbohandles); GLuint positionbufferhandle = vbohandles[0]; // 0. buffer name GLuint colorbufferhandle = vbohandles[1]; // 1. buffer name // Populate the position buffer glbindbuffer(gl_array_buffer, positionbufferhandle); glbufferdata(gl_array_buffer, 9*sizeof(float), positiondata, GL_STATIC_DRAW); // Populate the color buffer glbindbuffer(gl_array_buffer, colorbufferhandle); glbufferdata(gl_array_buffer, 9*sizeof(float), colordata, GL_STATIC_DRAW); 55
53 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 4. Make connection between data on a CPU and GPU // obtain location of each attribute GLint posloc = glgetattriblocation(programhandle, VertexPosition ); // This is the name in shader GLint colorloc = glgetattriblocation(programhandle, VertexColor ); // This is the name in shader // enable the vertex attribute arrays glenablevertexattribarray(posloc); glenablevertexattribarray(colorloc); // vertex position // vertex color // map attribute with index posloc to the position buffer glbindbuffer(gl_array_buffer, positionbufferhandle); glvertexattribpointer(posloc, 3, GL_FLOAT, GL_FALSE, 0, (GLubyte *)NULL); // map attribute with index colorloc to the color buffer glbindbuffer(gl_array_buffer, colorbufferhandle); glvertexattribpointer(colorloc, 3, GL_FLOAT, GL_FALSE, 0, (GLubyte *)NULL); 56
54 4. Příklad dva atributy ve dvou VBO Příklad části programu v C++ // 5. Use the data in the application to render them // in the render function, bind to the vertex array object and call gldrawarrays to initiate rendering glbindvertexarray(vaohandle); gldrawarrays(gl_triangles, 0, 3 ); 57
55 4. Příklad dva atributy ve dvou VBO Vertex Shaders Vertex Buffer with vertex coordinates index 0 index 1 index 2 vertexposition vertexcolor in vec4 position; in vec4 color; gl_position Vertex Buffer with vertex colors index 3 index 0 index 1 index 2 index 3 vertexposition vertexcolor vertexposition vertexcolor in vec4 position; in vec4 color; in vec4 position; in vec4 color; gl_position gl_position location 58
56 Zajímavé odkazy David Wolff: OpenGL 4.0 Shading Language Cookbook. Packt Publishing, 2011, ISBN Richard S. Wright, Nicholas Haemel, Graham Sellers, Benjamin Lipchak: OpenGL SuperBible: Comprehensive Tutorial and Reference. 5th ed., Addison-Wesley Professional, 2010, ISBN Ed Angel, Dave Shreiner: An Introduction to Modern OpenGL Programming, SIGGRAPH 2011 tutorial, OpenGL.pptx Joe Groff. An intro to modern OpenGL. Updated July 14, Vertex Array Object na OpenGL Wiki: Vertex Specification na OpenGL Wiki: 60
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
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
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
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
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é
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
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í
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
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,
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
TAM. Prezentace přednášek. Ústav počítačové grafiky a multimédií
TAM Prezentace přednášek Ústav počítačové grafiky a multimédií Grafika na mobilních zařízeních OpenGL ES 2.0 Motto If Edison had a needle to find in a haystack, he would proceed at once with the diligence
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
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í
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
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
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
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í
Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení
Třída DrawingTool strana 1 1. Základ Třída DrawingTool Třída DrawingTool je určena k jednoduchému kreslení pomocí několika základních příkazů do grafického okna zadaných rozměrů (nastavení v konstruktoru),
Reprezentace 3D scény
Reprezentace 3D scény 1995-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 36 Metody reprezentace 3D scén objemové reprezentace přímé informace o vnitřních
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
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í
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);
Ú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
Počítačová grafika 2 (POGR2)
Počítačová grafika 2 (POGR2) Pavel Strachota FJFI ČVUT v Praze 19. února 2015 Kontakt Ing. Pavel Strachota, Ph.D. Katedra matematiky Trojanova 13, místnost 033a E-mail: pavel.strachota@fjfi.cvut.cz WWW:
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
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
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
Zdroj: http://www.root.cz/clanky/pravda-a-myty-o-gifu/
Zdroj: http://www.root.cz/clanky/pravda-a-myty-o-gifu/ Bitmapový formát (rastrový obrázek) Většina z používaných grafických formátů (JPEG, PNG, TGA, BMP) obsahuje popis rastrového obrázku jako celku ukládají
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ř.
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 této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru
Příloha 1: Struktura XML dokumentu V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru /mapa/map.xml. Obsah
2 Grafický výstup s využitím knihovny
2 Grafický výstup s využitím knihovny Studijní cíl Tento blok je věnován základním principům při vytváření grafického výstupu pomocí standardních metod, které poskytuje grafické rozhraní. V textu budou
Rastrová reprezentace
Rastrová reprezentace Zaměřuje se na lokalitu jako na celek Používá se pro reprezentaci jevů, které plošně pokrývají celou oblast, případně se i spojitě mění. Používá se i pro rasterizované vektorové vrstvy,
Připravil: David Procházka. Projekce
15. října 2013, Brno Připravil: David Procházka Projekce Počítačová grafika 2 Projekce Strana 2 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice
Zobrazování a osvětlování
Zobrazování a osvětlování Petr Felkel 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 S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa
Jana Dannhoferová Ústav informatiky, PEF MZLU
Počítačová grafika 1. Definice oblasti souvisí: a) s definováním množiny všech bodů, které náleží do hranice a zároveň do jejího vnitřku b) s popisem její hranice c) s definováním množiny všech bodů, které
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
Návod k použití softwaru Solar Viewer 3D
Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a
Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy
Úloha 1 Úloha 2 Otázka se týká předchozího kódu. Určete pravdivost následujícího tvrzení: "Pro každý bod vytvoří úsečku mezi ním a středem panelu." Úloha 3 Otázka se týká předchozího kódu. Určete pravdivost
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
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í
PB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20
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
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
Zobrazování terénu. Abstrakt. 1. Úvod. 2. Vykreslování terénu
Zobrazování terénu Jan Vaněk, Bruno Ježek Universita Obrany, Fakulta vojenského zdravotnictví, Katedra všeobecně vzdělávacích oborů e-mail: vanek@pmfhk.cz; jezek@pmfhk.cz Abstrakt Vizualizace terénu je
PostGIS Topology. Topologická správa vektorových dat v geodatabázi PostGIS. Martin Landa
Přednáška 5 Topologická správa vektorových dat v geodatabázi PostGIS 155UZPD Úvod do zpracování prostorových dat, zimní semestr 2018-2019 Martin Landa martin.landa@fsv.cvut.cz Fakulta stavební ČVUT v Praze
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
FPC - Převodník pro čínské čtečky F17 a F18 - podrobný popis služeb a příkazů -
FPC - Převodník pro čínské čtečky F17 a F18 - podrobný popis služeb a příkazů - verze 1.0, 16.5.2011 Jiří Libra, jiri.libra@gmail.com Příkazy služby FPCManagement Formát dat služby FPCManagement v protokolu
Úvodem... 9 Kapitola 1 Karetních
Úvodem... 9 Základní znalosti o programovacích jazycích...10 Jazyk C# a platforma.net...10 Visual C# 2010 Express...11 Instalace platformy.net 4.0 a Visual C# 2010 Express...11 Zdrojový kód aplikací...12
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í
SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ. Martin Štroner, Bronislav Koska 1
SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ SOFTWARE FOR PROCESSING OF POINT CLOUDS FROM LASER SCANNING Martin Štroner, Bronislav Koska 1 Abstract At the department of special geodesy is
Databázové systémy Cvičení 5.2
Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako
První kroky s METEL IEC IDE
První kroky s poskytuje programování v IEC 61131-3 jazycích, podporuje jak grafickou tak textovou podobu. Umožňuje vytvářet, upravovat a ladit IEC 61131-3 (ST, LD, IL, FBD) programy pro řídicí jednotky
Hardware pro počítačovou grafiku NPGR019
Hardware pro počítačovou grafiku NPGR019 Matematika pro real-time grafiku Josef Pelikán Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012 Obsah 1 Homogenní souřadnice, maticové transformace Převod
Úvod Typy promítání Matematický popis promítání Implementace promítání Literatura. Promítání. Pavel Strachota. FJFI ČVUT v Praze
Promítání Pavel Strachota FJFI ČVUT v Praze 30. března 2011 Obsah 1 Úvod 2 Typy promítání 3 Matematický popis promítání 4 Implementace promítání Obsah 1 Úvod 2 Typy promítání 3 Matematický popis promítání
Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA
Common Object Request Broker Architecture FJFI ČVUT 9. 12. 2010 Osnova 1 2 3 4 5 Standard umožňující propojení aplikací psaných v různých jazycích a běžících na různých strojích a architekturách. Definuje
Elektronické publikování - prezentace. 23. dubna 2009 VŠB - TUO. Beamer - grafické zpracování prezentace. Rostislav Šuta, sut017.
Beamer - Elektronické publikování - VŠB - TUO 23. dubna 2009 Obsah 1 2 3 4 5 6 Obsah 1 2 3 4 5 6 schémata barvy písma změna fontu vnitřní schémata vnější schémata Obsah Prezentace bez navigace e stromovou
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
Struktura scény. Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E)
Struktura scény 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 Sloupa
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
3D počítačová grafika na PC. 2003 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/
3D počítačová grafika na PC 2003 Josef Pelikán, MFF UK Praha http://cgg.ms.mff.cuni.cz/ Pokroky v hardware 3D akcelerace běžná i v konzumním sektoru zaměření na hry, multimedia vzhled kvalita prezentace
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)
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
Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
Práce s binárními soubory. Základy programování 2 Tomáš Kühr
Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba
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
Grafické adaptéry a monitory
Grafické adaptéry a monitory 1 Základní pojmy Rozlišení: počet zobrazovaných bodů na celou obrazovku Příklad: monitor VGA s rozlišením 640 x 480 bodů (pixelů) na každém řádku je 640 bodů, řádků je 480
Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1
Kapitola 4 Rasterizace objektů Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na rastrově definované obrazy. Při zobrazení reálného modelu ve světových souřadnicích na výstupní
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
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
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
Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010
Ing. Jan Buriánek (ČVUT FIT) Reprezentace bodu a zobrazení BI-MGA, 2010, Přednáška 2 1/33 Ing. Jan Buriánek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické
Základy programování (IZP)
Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden
Základy programování (IZP)
Základy programování (IZP) Jedenácté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz
Základy programování (IZP)
Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 27.11.2017,
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ů
PB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky
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í
Uspořádaný seznam nula nebo více elementů, každý je typem ASN.1 (heterogenní seznam) uspořádaný seznam stejných elementů
Basic Encoding Roles and ASN.1 ASN.1 je univerzální jazyk pro specifikaci datových typů. Dovoluje definovat nejen typ dat, ale i jejich velikost (rozsah hodnot) a význam. BER (Basic Encoding Roles) je
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
Digitální kartografie 4
Digitální kartografie 4 tvorba vektorových dat Vytváření liniových dat 1. Příprava Otevření aplikace ArcCatalog v menu Start Programy ArcGIS ArcCatalog, nebo přímo z ArcMapu kliknutím na ikonu v nástrojové
Obsah. Základy práce s rastry. GIS1-5. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie
ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie říjen 2010 Obsah prezentace 1 2 3 4 Měli bychom umět ovládat prostorové analýzy překryvné (overlay) a bĺızkostní (buffer) funkce umět kombinovat
MyIO - webový komunikátor
MyIO - webový komunikátor Technická příručka verze dokumentu 1.0 FW verze modulu 1.4-1 - Obsah 1 MyIO modul... 3 2 Lokální webové rozhraní... 3 2.1 Start, první přihlášení... 3 2.2 Home úvodní strana MyIO...
Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)
Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Autor: Radek Vystavěl Díl 8: Analytická geometrie Polární souřadnice, kružnice, elipsa, spirála MATEMATIKA Pro úlohy aplikované
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www:
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
KATEDRA INFORMATIKY. Demonstrace OpenGL v prostředí LispWorks
PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE Demonstrace OpenGL v prostředí LispWorks 2014 Martin Křetínský Anotace Pojem OpenGL je v moderní počítačové grafice velmi
Geometrické transformace pomocí matic
Geometrické transformace pomocí matic Pavel Strachota FJFI ČVUT v Praze 2. dubna 2010 Obsah 1 Úvod 2 Geometrické transformace ve 2D 3 Geometrické transformace ve 3D Obsah 1 Úvod 2 Geometrické transformace
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
Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů
Tvorba informačních systémů 1/18 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních systémů 2/18 Úvod
Práce s texty, Transformace rastru, Připojení GPS
Školení programu TopoL xt Práce s texty, Transformace rastru, Připojení GPS Obsah: 1. Uživatelské rozhraní (heslovitě, bylo součástí minulých školení) 2. Nastavení programu (heslovitě, bylo součástí minulých
POROVNÁNÍ VÝKONU VYKRESLOVÁNÍ V IOS A METAL RENDERING PERFORMANCE COMPARISON IN IOS AND METAL
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
Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech
Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech cíl: vytvořit třídu inf_system pro ukládání informací o studentech a zaměstnancích působících na fakultě příklad použití: int main() { inf_system
IUJCE 07/08 Přednáška č. 6
Správa paměti Motivace a úvod v C (skoro vždy) ručně statické proměnné o datový typ, počet znám v době překladu o zabírají paměť po celou dobu běhu programu problém velikosti definovaných proměnných jak
IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
Téma: Arkanoid. X36SOJ Strojově orientované jazyky Semestrální práce. Vypracoval: Marek Handl Datum: červen 2006
Vypracoval: Marek Handl Datum: červen 2006 X36SOJ Strojově orientované jazyky Semestrální práce Téma: Arkanoid Úvod Program je verzí klasické hry Arkanoid. Na herní ploše jsou rozloženy kostičky, které
Tvorba informačních systémů
Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních
Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)
Základy jazyka C Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační záležitosti Konzultace Pracovna 5.076 Úterý 15:00 16:30 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1
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