Základy programování shaderů v OpenGL část 1 program
|
|
- Antonín Doležal
- před 7 lety
- Počet zobrazení:
Transkript
1 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) felkel@fel.cvut.cz S použitím materiálů Vlastimila Havrana Poslední změna:
2 Obsah přednášky Dnes Tok dat v OpenGL se shadery Překlad a sestavení programu Struktura programu typu shader Příště Předávání dat a parametrů do programu typu shader Příklady zdrojových kódů pro shadery
3 Hrubé schéma OpenGL s programovatelným zobrazovacím řetězcem Vertex Data Pixel Data Vertex Shader Texture Store Primitive Assembly and Rasterization Fragment Shader Fragment operations OpenGL verze 3.1 Každá aplikace definuje dva programy (tzv. shadery): vertex shader (VS) program zapsaný v jazyku GLSL, který zpracovává vrcholy fragment shader (FS) program zapsaný v GLSL zpracovává fragmenty
4 Shadery a OpenGL Shadery jsou programy, které plně běží na grafické kartě GPU OpenGL na CPU jen organizuje (data a shadery) Shadery pracují paralelně SIMD (single instruction multiple data) VS po vrcholech FS po fragmentech Fragment = kandidát na zobrazený pixel Zda bude nakonec zobrazen rozhodne další část zobrazovacího řetězce Obecně nese více informací, než jen zobrazenou barvu (hloubku, průhlednost, normálu, směr ke světlu, ) 4
5 Princip zpracování primitiv na pixely VS FS [ 5
6 Zjednodušený model proudového zpracování Aplikace GPU Data Flow Framebuffer Vrcholy Vrcholy Fragmenty Pixely Vertex Processing Rasterizer Fragment Processing Vertex Shader Fragment Shader
7 Tok dat v OpenGL pipeline Primitive assembly 7
8 Tok dat v OpenGL po částech 1/3 OpenGL okopíruje blok dat na GPU (blok vrcholů) [Gortler] Pro každý vrchol se spustí jeden Vertex shader Primitive assembly Příkaz draw vykreslí trojice vrcholů jako trojúhelníky (souřadnice a atributy) VS obdrží souřadnice a atributy vrcholu + Uniformní proměnné (společné více primitivům) VS vypočítá normalizovanou 2D pozici vrcholu v okně (-1,-1) (1,1) + další proměnné měnící se v ploše trojúhelníka (out,varying) Blok primitive assembly počká na tři vrcholy a poskládá z vrcholů zase trojúhelník 8
9 Tok dat v OpenGL po částech 2/3 [Gortler] Primitive assembly Blok primitive assembly předá trojúhelníky (trojice vrcholů) rasterizátoru Rasterizer Vygeneruje fragmenty trojúhelníka Dále odešle pozici fragmentu a Interpolované hodnoty proměnných (varying) ve vrcholech 9
10 Tok dat v OpenGL po částech 3/3 [Gortler] FS se spustí pro každý fragment Vypočítá barvu a hloubku fragmentu Odešle je do grafické paměti Fragment se stane pixelem na obrazovce, pokud projde testy (výstřižek, šablona, alfa, hloubka) 10
11 Shadery Shader je program, který běží na grafické kartě (GPU) Definuje funkci jednoho bloku zobrazovacího řetězce OpenGL používá jazyk podobný jazyku C, který se jmenuje OpenGL Shading Language (GLSL) vstupní atributy / proměnné shader zapsán v GLSL výstupní proměnné 11
12 Shadery (typické úlohy) vertex shader (VS) pracuje na úrovni vrcholů transformace vrcholu transformace a normalizace normály transformace souřadnic pro textury změna atributů asociovaných s vrcholy (např. některé složky barvy) fragment shader (fs) pracuje na úrovni fragmentů přístup k textuře a další zpracování textury mlha, míchání barev, stínování operace nad interpolovanými hodnotami 12
13 Moderní programování v OpenGL Moderní programy v OpenGL při vykreslování obrázku v zásadě provádějí pouze tyto čtyři kroky: 1. Přelož všechny shadery a nahraj je na GPU 2. Rezervuj místo pro data ( buffer objects ) a nahraj do nich data 3. Propoj - data v bufferech se vstupními proměnnými (VS) a - výstupní proměnné (VS) se vstupy dalšího bloku (FS) 4. Spusť vykreslování, obrázek je vypočítán na GPU a zobrazen. 13
14 Každý shader se překládá zvlášť Vytvoř shader Nahraj zdrojový kód pro shader Zkompiluj shader I. glcreateshader() glshadersource() glcompileshader() Tato část se opakuje pro každý shader 14
15 Programy s použitím shaderu v OpenGL Před použitím musí být shadery přeloženy a sestaveny Překládá se až za běhu aplikace na konkrétním HW OpenGL má proto příkazy pro kompilátor a linker programu Každý program musí obsahovat: vertex shader fragment shader Vytvoř program Vytvoř shader Nahraj zdrojový kód pro shader Zkompiluj shader Připoj shader k programu II. I. glcreateprogram() glcreateshader() glshadersource() glcompileshader() glattachshader() Tato část se opakuje pro každý shader Sestav program gllinkprogram() Použij program gluseprogram() 15
16 Zápis programu typu shader Program pro shader je text typicky se ukládá ve zvláštních souborech vertex shader přípona.vert,.vs, fragment shader.frag,.fs, lze jej uložit i přímo v kódu jazyka C do textových řetězců 16
17 Příklady zdrojových kódů Příklad textu programu pro vertex shader Příklad textu programu pro fragment shader #version 400 in vec3 VertexPosition; in vec3 VertexColor; out vec3 Color; void main() { Color = VertexColor; gl_position = vec4(vertexposition, 1.0); } #version 400 in vec3 Color; out vec4 FragColor; void main() { FragColor = vec4(color, 1.0); } 17
18 Práce se shadery v kódu aplikace I. Kroky při překladu shaderů: 1. Vytvoř objekt typu shader (shader object) 2. Předej mu zdrojový kód programu 3. Přelož zdrojový kód shaderu uvnitř objektu typu shader (compile) 4. Zkontroluj výsledek (status) překladu II. Kroky při sestavení programu (vertex a fragment shader) 5. Vytvoř objekt programu 6. Připoj objekty shaderů k objektu programu 7. Sestav program (link) 8. Zkontroluj status sestaveného programu III. Použití programu v aplikaci 18
19 I. Překlad programu typu shader I. Kroky při překladu shaderů: 1. Vytvoř objekt typu shader (shader object) 2. Předej mu zdrojový kód programu (jeden textový řetězec nebo pole řetězců) 3. Přelož zdrojový kód shaderu uvnitř objektu typu shader 4. Zkontroluj výsledek (status) překladu shader source shader source shader object glshadersource compile check status 19
20 1. Vytvoření objektu typu shader Jméno shaderu = kladná hodnota odkazující na vytvořený shader objekt Typ vytvářeného shaderu GL_VERTEX_SHADER nebo GL_FRAGMENT_SHADER GLuint vertshader = glcreateshader( GL_VERTEX_SHADER ); if (vertshader == 0) { // check for error fprintf(stderr, "Error creating vertex shader.\n"); exit(1); } Objekt shaderu udržuje zdrojový kód a přeložený shader. Po sestavení programu (link) lze objekt shaderu smazat Odkazujeme na něj jménem (kladná celočíselná hodnota) 20
21 2. Nahrání zdrojového kódu z pole řetězců Funkce sloužící k nahrání textů zdrojového kódu shaderu z externího souboru const GLchar * shadercode1 = loadshaderasstring("basic.vert"); const GLchar* codearray[] = {shadercode1, shadercode2}; glshadersource( vertshader, 2, codearray, NULL ); Jméno objektu shader Počet řetězců zdrojových kódů Pole ukazatelů na řetězce zdrojový text shaderu lze poskládat z více částí Pole hodnot Glint délky jednotlivých řetězců zdrojových kódů (NULL indikuje, že řetězce jsou ukončeny nulovým znakem 0x00) 21
22 2. Nahrání zdroj. kódu z jednoho řetězce Funkce sloužící k nahrání textů zdrojového kódu shaderu z externího souboru const GLchar * shadercode = loadshaderasstring("basic.vert"); glshadersource( vertshader, 1, &shadercode, NULL ); Jméno objektu shader Počet řetězců zdrojových kódů Reference na odkaz na řetězec (celý program je v jediném řetězci) NULL indikuje, že jediný řetězec je ukončen nulovým znakem 0x00 22
23 3. 4. Překlad a kontrola správnosti glcompileshader(vertshader); GLint result; glgetshaderiv(vertshader, GL_COMPILE_STATUS, &result); if (result == GL_FALSE) { Dotaz na výsledek fprintf( stderr, "Vertex shader compilation failed!\n" ); překladu GLint loglen; glgetshaderiv(vertshader, GL_INFO_LOG_LENGTH, &loglen ); } if ( loglen > 0 ) { char * log = (char *)malloc(loglen); GLsizei written; } glgetshaderinfolog(vertshader, loglen, &written, log); fprintf(stderr, "Shader log:\n%s", log); free(log); Překlad zdrojového kódu v objektu shaderu Dotaz na délku chybové zprávy o překladu Získání textové zprávy o chybě 23
24 Shader pomocí knihovny pgr Jméno shaderu = kladná hodnota odkazující na vytvořený shader objekt Typ vytvářeného shaderu GL_VERTEX_SHADER nebo GL_FRAGMENT_SHADER GLuint vertshader = pgr::createshaderfromfile ( GL_VERTEX_SHADER, "basic.vert"); if (vertshader == 0) { // check for error fprintf(stderr, "Error creating vertex shader.\n"); exit(1); } Soubor s textem shaderu 24
25 II. Sestavení objektu typu program se shadery Přeložené shadery musí být sestaveny do shader programu (vertex + fragment shader) Kroky k sestavení shader programu: 5. Vytvoř objekt programu 6. Připoj shadery k objektu typu program (attach) 7. Sestav program (link) 8. Zkontroluj výsledek sestavování programu shader object shader object attach attach shader program object link check status 25
26 5. Vytvoř objekt typu program Nenulová hodnota k identifikaci vytvořeného program objektu Vytvoř prázdný objekt programu GLuint programhandle = glcreateprogram(); if (programhandle == 0) {// check for error fprintf(stderr, "Error creating program object.\n"); exit(1); } Objekt typu program v OpenGL obsahuje kód všech shaderů použitých v programu (alespoň vertex + fragment shader). 26
27 6-7. Připoj shader k objektu typu program Připoj vertex shader k programu Připoj fragment shader k programu glattachshader(programhandle, vertshader); glattachshader(programhandle, fragshader); gllinkprogram(programhandle); Sestav spustitelný program typu.gpuexe, který běží na dvou komponentách GPU: programovatelný vertex processor (je-li shader objekt typu GL_VERTEX_SHADER připojen k programu) programovatelný fragment processor (je-li shader objekt typu GL_FRAGMENT_SHADER připojen k programu) 27
28 8. Zkontroluj stav sestaveného programu Příklad části programu v C++ GLint status; glgetprogramiv(programhandle, GL_LINK_STATUS, &status); if (status == GL_FALSE) { fprintf( stderr, "Failed to link shader program!\n" ); GLint loglen; } glgetprogramiv(programhandle, GL_INFO_LOG_LENGTH, &loglen); if ( loglen > 0 ) { char * log = (char *)malloc(loglen); GLsizei written; glgetprograminfolog(programhandle, loglen, &written, log); fprintf(stderr, "Program log: \n%s", log); free(log); } Zkontroluj zda sestavení proběhlo v pořádku Dotaz na délku chyb. zprávy o sestavení Získej textové zprávy o chybě sestavení programu a vypiš je 28
29 Program pomocí knihovny pgr Jméno programu = kladná hodnota odkazující na vytvořený program objekt Seznam objektů shaderů const GLuint shaderidarray[] = {vertshader, fragshader, 0}; GLuint programhandle = pgr::createprogram (shaderidarray); if (programhandle == 0) { // check for error fprintf(stderr, "Error creating vertex shader.\n"); exit(1); } 29
30 III. Nahraj program do zobrazovacího řetězce OpenGL if (status == GL_FALSE) { } else { gluseprogram(programhandle); } Instaluj program s připojenými shadery do zobrazovacího řetězce na GPU Příklad části programu v C++ Jméno objektu programu, který se nyní bude provádět v zobrazovacím řetězci program je připraven pro spuštění a zobrazovaní obrazu na výstup Objektů typu program lze vytvořit několik a poté mezi nimi přepínat příkazem gluseprogram() v rámci běhu jedné aplikace. Programy přitom mohou mít připojené stejné shadery. 30
31 Struktura zdrojového kódu shaderu Verze GLSL (zde 4.0) vstupní proměnné shaderu (pro VS atributy) výstupní proměnné shaderu Funkce main(), která je spouštěna pro každý vrchol (VS) nebo fragment (FS) Příklad zdrojového programu pro vertex shader: #version 400 in vec3 VertexPosition; in vec3 VertexColor; out vec3 Color; void main() { Color = VertexColor; gl_position = vec4(vertexposition, 1.0); } Vestavěná výstupní proměnná (prefix gl_) 31
32 Kvalifikátory proměnných Kvalifikátor uložení v paměti in out uniform Význam Vstup atributu (VS), nebo propojení na výstup předchozího bloku (FS - výstup rasterizátoru) Výstupní hodnota shaderu propojí se s dalším blokem (VS s rasterizátorem, FS s blokem testů) Hodnota společná více primitivům. Je přístupná ve všech shaderech (VS i FS). Nastavuje ji OpenGL (v C++) před příkazem draw. Způsob interpolace hodnot v rasterizátoru se nastavuje interpolačním kvalifikátorem (pro out ve VS a pro in FS): Interpolační kvalifikátor smooth flat noperspective význam perspektivně správná interpolace hodnot bez interpolace lineární interpolace 32
33 Propojení shaderů navzájem Propojení VS a FS (FS dostávají interpolované hodnoty) vertex shader Rasterizace a interpolace fragment shader Příklad zdroj. kódu vertex shader #version 400 in vec3 VertexPosition; in vec3 VertexColor; out vec3 Color; void main() { Jméno a datový typ Color = VertexColor; musí být stejný gl_position = vec4(vertexposition, 1.0); } Příklad zdroj. kódu fragment shader #version 400 in vec3 Color; out vec4 FragColor; void main() { FragColor = vec4(color, 1.0); } 33
34 Připojení atributů = vstupů vertex shaderu Každá vstupní proměnná vertex shaderu má vlastní celočíselný index (location). Ten lze nastavit: V OpenGL aplikaci před sestavením shader programu příkazem glbindattriblocation() glbindattriblocation(programhandle, 0, VertexPosition ); Index (location) atributu Jméno atributu V shaderu pomocí kvalifikátoru layout: layout (location = 0) in vec3 VertexPosition; Pokud hodnotu indexu (location) explicitně nenastavíme, je index vygenerován při sestavení programu automaticky 34
35 Připojení atributů = vstupů vertex shaderu Pokud je index atributu přiřazen automaticky linkerem při sestavení programu, lze se na jeho hodnotu dotázat (po zkompilování a slinkování!) příkazem: glgetattriblocation(programhandle, VertexPosition ); vrací index atributu (=location, typ GLint) jméno atributu Index atributu (location) nabývá hodnot 0,1,2,,, pokud byl atribut ve VS aktivně použit 1 pokud nebyl v textu VS nalezen, nebo v nebyl v shaderu použit a byl proto vypuštěn 35
36 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) 36
37 Předání dat do shaderu pomocí proměnných s kvalifikátorem uniform uniform kvalifikátor pro proměnné Vhodný pro hodnoty, které se mění málo (např. jsou stejné pro celý objekt, třeba transformační matice) Hodnoty se nastavují v OpenGL API, v C++ Vždy jsou vždy použity jako vstupní proměnné V kódu shaderu je nelze měnit (read-only) Deklarace proměnné s kvalifikátorem uniform a jménem RotationMatrix (matice k transformaci vrcholů) Příklad zdrojového kódu pro Vertex shader #version 400 in vec3 VertexPosition; in vec3 VertexColor; out vec3 Color; uniform mat4 RotationMatrix; void main() { Color = VertexColor; gl_position = RotationMatrix* vec4(vertexposition, 1.0); } 37
38 Předání dat do shaderu pomocí proměnných s kvalifikátorem uniform (pokr.) Příklad části programu v C++ // clear the color buffer glclear(gl_color_buffer_bit); // use glm (part of -framework) function to create a transformation matrix mat4 rotationmatrix = glm::rotate(mat4(1.0f), angle, vec3(0.0f,0.0f,1.0f)); // find location of a uniform variable GLuint location = glgetuniformlocation(programhandle, "RotationMatrix"); if (location >= 0) { // location == -1 if uniform is not active } // assign a value to the uniform variable gluniformmatrix4fv(location, 1, GL_FALSE, &rotationmatrix[0][0]); // bind to the vertex array object and call gldrawarrays to initiate rendering glbindvertexarray(vaohandle); gldrawarrays(gl_triangles, 0, 3 ); 38
39 Varianty příkazu gluniform gluniform{ }{f i ui} 1 pro float, int, unsigned int, bool; 2 pro vec2, ivec2, uvec2, bvec2, atd. f pro float (float, vec2, vec3, vec4, nebo jejich pole) i pro int (int, ivec2, ivec3, ivec4, nebo jejich pole) ui pro unsigned int, uvec2, uvec3, uvec4, nebo jejich pole) i, ui or f pro bool (bool, bvec2, bvec3, bvec4, nebo jejich pole) false pro 0 a 0.0f a true pro nenulové hodnoty 39
40 Příklady příkazu gluniform Jednotlivé hodnoty 1 až 4x float gluniform1f(location, 7.5f); gluniform4f(location, 0.5f, 0.5f, 0.2f, 1.0f); Pole hodnot int pole[count] pole o délce count gluniform1iv(location, count, pole); Matice či pole matic gluniformmatrix4fv(location, 1, GL_FALSE, &rotationmatrix[0][0]); 1 matice Nebude se transponovat 40
41 Typ datových proměnných základní datové typy: float, double, bool, int, uint stejně jako v jazyce C vektory s 2, 3 nebo 4 složkami: vec{2,3,4} {2,3,4}-složkový vektor s jednoduchou přesností (float) dvec{2,3,4} {2,3,4}-složkový vektor s dvojitou přesností (double) bvec{2,3,4} {2,3,4}-složkový vektor s hodnotami bool ivec{2,3,4} {2,3,4}-složkový vektor s celočíselnými hodnotami čtvercové matrice: mat2, dmat2 matice 2 2 s jednoduchou či dvojnásobnou přesností mat3, dmat3 matice 3 3 dtto v pohyblivé řádové čárce mat4, dmat4 matice 4 4 dtto 41
42 Deklarace a inicializace proměnných int a = 2; // a is initialized with 2 bool d = true; // d is true float b = 2; // incorrect, no automatic type casting supported float c = float(a); // correct. c is 2.0 vec3 f; // declaring f as a vec3 vec3 g = vec3(1.0, 2.0, 3.0); mat4 m = mat4(1.0) // initializing the diagonal of the matrix with 1.0 mat2 k = mat2(1.0,0.0,1.0,0.0); // all elements are specified float frequencies[3] = float[](3.4, 4.2, 5.0); // initialize array of floats struct dirlight { // type definition vec3 direction; vec3 color; }; dirlight d1; dirlight d2 = dirlight(vec3(1.0,1.0,0.0),vec3(0.8,0.8,0.4)); // structure initialization 42
43 Přístup ke složkám vektorových proměnných vec3 pos = vec3(1.0, 2.0, 3.0); float f = 1.2; double c = 2.0LF; // float and double constants pos.x // is legal, the same as pos.r pos.xy // is legal, the same as pos.rg pos.w // is illegal f.x // is legal, the same as f.r or f.s f.y // is illegal const int L = pos.length(); // number of components in vector // the order of the components can be different to swizzle them, or replicated vec3 swiz= pos.zyx; // swizzled = (3.0, 2.0, 1.0) vec4 dup = pos.xxyy; // duplicated = (1.0, 1.0, 2.0, 2.0) vec4 dup = f.xxxx; // duplicated = (1.2, 1.2, 1.2, 1.2) // accessing matrix components mat4 m; m[1] = vec4(2.0); // sets the second column to all 2.0 m[2][3] = 2.0; // sets the 4th element of the third column to
44 Vestavěné funkce v GLSL trigonometrické funkce radians(), degrees(), sin(), cos(), atan(), exponenciální funkce pow(), exp(), log(), sqrt(), geometrické funkce pro vektory dot(), cross(), length(), normalize(), reflect() maticové funkce transpose(), determinant(), inverse() funkce pracující s vektory relačně po složkách: bvec equal(vec x, vec y), bvec greaterthan(vec x, vec y) běžné algebraické funkce abs(), floor(), min(), max(), mix(), 44
45 Uživatelské funkce v rámci shaderu Definice funkce může být přetížena pokud jsou parametry funkce rozdílné Chování rekurzivních funkcí není definováno in vec3 VertexPosition; in float VertexStartTime; Uživatelsky definovaná funkce s identifikátorem funkce12 Vestavěná výstupní proměnná (prefix gl_) out float Transp; uniform float ParticleLifetime; Uniform mat4 MVP; void funkce12(float Time) { float age = Time - VertexStartTime; Transp = 0.0; if(time >= VertexStartTime) Transp = age / ParticleLifetime; } gl_position = MVP * vec4(vertexposition, 1.0); 45
46 Příště Předávání dat z aplikace a mezi shadery 46
47 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: 47
Připravil: David Procházka. Shadery
5. října 2015, Brno Připravil: David Procházka Shadery Počítačová grafika 2 Obsah přednášky Strana 2 / 29 Obsah přednášky 1 Obsah přednášky 2 Shadery 3 Shrnutí Obsah přednášky Strana 3 / 29 Obsah přednášky
Ví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í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í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í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í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í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í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íceÚ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í
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í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í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í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í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í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íce24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
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í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íceAndroid 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í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í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í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íceZápis programu v jazyce C#
Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač
VíceÚvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
Více14.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í
VíceProgramování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů 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 1 2 Shrnutí procvičených
VícePokročilé architektury počítačů
Pokročilé architektury počítačů Tutoriál 3 CUDA - GPU Martin Milata Výpočetní model CUDA Organizace kódu Sériově organizovaný kód určený pro CPU Paralelní kód prováděný na GPU Označuje se jako kernel GPU
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í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íceOperační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
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íceJazyk C# a platforma.net
Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond
VíceProgramování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
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í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í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ícePrvní kapitola úvod do problematiky
První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru
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ícePB161 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
VíceTematický 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
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íce7. Datové typy v Javě
7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů
VíceAhoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4
Uložení dat v počítači Data = užitečné, zpracovávané informace Kódování (formát) dat = způsob uložení v počítači (nutno vše převést na čísla ve dvojkové soustavě) Příklady kódování dat Text každému znaku
Více8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
VíceKurz LSL skriptování. Shiny Iceberg 2009
Kurz LSL skriptování Shiny Iceberg 2009 2 2 Kurz LSL skriptování Shiny Iceberg v Second Life od roku 2006 shiny.iceberg@virtualmagazine.cz Aktuální projekty virtualmagazine.cz Urbanica, Shinyland Bwindi
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í (IZP)
Základy programování (IZP) Pá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 5. týden
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íce5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
VíceAlgoritmizace 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á
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íceMaturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
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íceProměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.
Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné
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íceZá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
VíceWORKSHEET 1: LINEAR EQUATION 1
WORKSHEET 1: LINEAR EQUATION 1 1. Write down the arithmetical problem according the dictation: 2. Translate the English words, you can use a dictionary: equations to solve solve inverse operation variable
VíceKnihovna DataBoxLib TXV 003 56.01 první vydání prosinec 2010 změny vyhrazeny
Knihovna DataBoxLib TXV 003 56.01 první vydání prosinec 2010 změny vyhrazeny 1 TXV 003 56.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá DataBoxLib_v14 OBSAH 1 Úvod...3
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íceKnihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01
PROGRAMOVATELNÉ AUTOMATY Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV 003 49.01 KNIHOVNA RecDBXLib DATABÁZE V DATABOXU 2. vydání řijen 2008 OBSAH 1. ÚVOD...3 2. KNIHOVNA RecDBXLib DATABÁZE V DATABOXU...4
VícePráce se soubory. Základy programování 2 Tomáš Kühr
Práce se soubory Základy programování 2 Tomáš Kühr Soubory z pohledu C Soubor zjednodušeně chápeme jako posloupnost bytů uložených někde na disku Datový proud (anglicky stream) Ještě obecnější přístup
VíceLabView jako programovací jazyk II
LabView jako programovací jazyk II - Popis jednotlivých funkcí palety Function II.část - Funkce Numeric, Array, Cluster Ing. Martin Bušek, Ph.D. Práce s daty typu NUMERIC Numerické funkce obsahuje funkce
Více7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 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 formátovanému výstupu,
VíceZá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
VíceOpakování programování
Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování
Vícex86 assembler and inline assembler in GCC
x86 assembler and inline assembler in GCC Michal Sojka sojkam1@fel.cvut.cz ČVUT, FEL License: CC-BY-SA 4.0 Useful instructions mov moves data between registers and memory mov $1,%eax # move 1 to register
VícePrezentace a vysvětlení programového prostředí NXC
Úvod Další jazyk, který je možno použít pro programování NXT kostky je NXC Not exatly C Na rozdíl od jazyku NXT-G, kde jsme vytvářeli program pomocí grafických prvků přesněji řečeno pomocí programovacích
Více13 Barvy a úpravy rastrového
13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody
VíceNá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
Více1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5
Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5
VícePočí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:
VíceJazyk C++ I. Šablony
Jazyk C++ I Šablony AR 2013/2014 Jazyk C++ I Úvod Zatím známe programovací styly: Strukturované programování, Objektově orientované programovaní. AR 2013/2014 Jazyk C++ I 2 Příklady void Print(const int&
Více7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
VícePřednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012
Přednáška Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského
VíceDatabáze I. Přednáška 4
Databáze I Přednáška 4 Definice dat v SQL Definice tabulek CREATE TABLE jméno_tab (jm_atributu typ [integr. omez.], jm_atributu typ [integr. omez.], ); integritní omezení lze dodefinovat později Definice
VícePaměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
VícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
VíceStandardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
VíceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
VíceX36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka
X36UNX 16 Numerické výpočty v sh příkazy expr, bc, dc Zdeněk Sojka sojkaz1@fel.cvut.cz dc desk calculator - zadávání příkazů postfixově - data se ukládají do stacku - příkazy obyčejně pracují s jedním
VíceObject Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.
Delphi lekce 6 Minimum z Object Pascalu Vrátíme se ještě k základům Object Pascalu. Struktura programu Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově
VíceAlgoritmizace 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á
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íceZákladní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Ú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 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
VíceZá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
VíceStruktura 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
VíceZá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,
VíceStřední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Datové typy Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 5 Číslo: V/5 Programování v jazyce
VíceDefinice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy
Uživatelem definované typy Ing. Lumír Návrat katedra informatiky, A 1018 59 732 3252 Definice uživatelského typu data Color = Red Green Blue Color typový konstruktor Red / Green / Blue datové konstruktory
VíceOPS Paralelní systémy, seznam pojmů, klasifikace
Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus
VíceČtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
VícePROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
VíceKurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.
1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace
VíceIAJCE 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());
VíceZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Více1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Více