+ All Categories
Home > Documents > Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv....

Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv....

Date post: 18-Aug-2020
Category:
Upload: others
View: 14 times
Download: 0 times
Share this document with a friend
45
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: [email protected] S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa, Ondřeje Karlíka a Vlastimila Havrana Poslední změna: 3.3.2016
Transcript
Page 1: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Programování grafikyÚVODPetr Felkel

Katedra počítačové grafiky a interakce, ČVUT FELmístnost KN:E-413 (Karlovo náměstí, budova E)

E-mail: [email protected] použitím materiálů Bohuslava Hudce, Jaroslava Sloupa,

Ondřeje Karlíka a Vlastimila Havrana

Poslední změna: 3.3.2016

Page 2: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Cíle předmětu programování grafiky (PGR)

Porozumět základům počítačové grafiky

Umět naprogramovat interaktivní aplikace v OpenGL• Nezávislé na platformě

(PC / Mac / vestavné systémy / web,…)

PGR

Page 3: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Organizace

Přednášky• Teorie počítačové grafiky – základy pro grafické aplikace

běžící v reálném čase (real time)• Syntéza obrazu s použitím OpenGL od verze 3.1• Demonstrační příklady a kódy jednotlivých technik

Cvičení• Detaily o OpenGL a GLSL• Jednoduché úlohy• Semestrální projekt (program, web, prezentace)

Podrobnosti na webu předmětuhttps://cent.felk.cvut.cz/courses/PGR/

PGR

Page 4: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Ukázky semestrálních prací

PGR

Page 5: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Dělení počítačové grafiky dle účelu [Karlík]

2D grafika • DTP – noviny, časopisy• Grafická uživatelská rozhraní- GUI• Výkresová dokumentace

3D grafika [Karlík]• Vizualizace• Filmová grafika• Realtime grafika - hry• …

PGR http://www.cs.utah.edu/npr/

Page 6: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Vizualizace

Reklama, vizualizace produktů, architektury – jediný obrázek Fotorealismus x photoshop Dlouhý čas na obrázek (dny až týdny)

PGR

[Karlík]

Page 7: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Filmová grafika

Obrovský rozsah dat (modely, textury,…) 24 obrázků / s, dlouhý výpočetní čas na obrázek (hodiny až dny) Umělecká kontrola nad výsledkem (ne vždy fotorealismus) RenderMan + studia vyvíjejí vlastní SW

PGR

[Karlík]

Page 8: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Realtime grafika

Malý počet polygonů (hrubá dutá slupka tělesa) Rasterizace, 30+ FPS, ~20ms na obrázek GPU Fake

PGR

[Karlík]

Page 9: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Obrázek• Omezené rozlišení

(Daný počet pixelů)• Zubaté okraje, artefakty• Nutno vyhlazovat

Obrázek, pixely a antialiasing

bez vyhlazování s vyhlazováním

PGR

Page 10: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Geometrické modelování x zobrazování

Modelování – často komplexní plochyZobrazování – trojúhelníky ve 3D (teselace)

PGR

Page 11: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Textury

PGR

Page 12: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Základ syntézy obrazu

PGR

Page 13: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Problém viditelnosti

PGR

Page 14: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Negeometrické vlastnosti objektů

PGR

Page 15: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Různá kvalita syntetizovaného obrazu(obrázky fy PIXAR)

Polygonální model – drátové zobrazení Polygonální model –drátové zobrazení s viditelností

PGR

Page 16: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Různá kvalita syntetizovaného obrazu(obrázky fy PIXAR) II

Polygonální model – konstantní stínování Polygonální model – interpolované stínování

Mapování textur Stíny

PGR

Page 17: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Vztah počítačové grafiky a vidění

Vymezení pojmu

Počítačová grafikatransformace dat z objektového (3D) do obrazového prostoru (2D)

Počítačová geometriezpracování geometrických a topologických dat v objektovém prostoru

Zpracování obrazuZpracování nestrukturovaných rastrových obrázků (zlepšování kvality obrazu, vyhledávání obrysů, ..)

Počítačové viděníNa základě analýzy obrazu se hledají objekty a vztahy mezi objektyv objektovém prostoru.

obrazový prostorobjektový

prostor

zpracování obrazu

počítačová grafika

počítačové vidění

počítačová geometrie

PGR

Page 18: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Velmi hrubý pohled na grafický HW

PGR

HOST

CPUMEM

Grafika

GPUVIDEOMEM

Monitor

CPU dodá dataGrafika je zpracuje a uloží do paměti obrazu

Z paměti obrazu se posílají do monitoru

Page 19: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Host

Připraví data • balíky vrcholů + konektivita• textury

Připraví programy pro GPU -„shadery“ Pošle vše na grafickou kartu Nastaví stav OpenGL Posílá příkazy – kresli

Obsluhuje interakci s uživatelem (klávesnice, myš)

Řídí animace, …PGR

HOST

CPUMEM

C/C++OpenGL

Page 20: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Grafika

PGR

Grafika

GPUVIDEOMEM

Přijímá data a nastavení od hosta• Ukládá je do své grafické paměti• Je to hierarchie pamětí

Videopaměť – cache L1, L2 – registry …

60x za sekundu • Smaže obrazovou paměť • „vykreslí obraz“

Pracuje paralelně• Po vrcholech, primitivech, fragmentech• Spouští na ně shadery

GLSL

Page 21: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Obrazová paměť

PGR

Grafika

GPUVIDEOMEM

Obrazová paměť = framebuffer Ukládá vykreslený obraz

Má více vrstev: Barvu, hloubku, … Čte se z ní obraz do monitoru

- 60x za sekundu

Problémy • propustnosti (bandwidth), • současného čtení, • latence paměti (=>cache),…

Page 22: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Problém propustnosti sběrnice

PGR

HOST

CPUMEM

Grafika

GPUVIDEOMEM

Monitor

Omezený datový tok~8 GB/s

(PCI Express v 2.0, 16 linek)

Video~0,3 GB/s

(1920x1080, 60FPS)

Dat ke generování obrazu je mnohem více:Geometrie (300 mil. tr., 50FPS => 10.2 GB/s , Textury,…

=> Maximum dat předem na grafickou kartu a na ní grafické výpočty

Page 23: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Typické zřetězení grafických operací –graphics pipeline

PGR [http://open.gl/drawing]

Page 24: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Typické zřetězení grafických operací –graphics pipeline

PrimitiveAssembly

and Rasterization

FragmentProcessing

Fragment operations

VertexData

PixelData

Vertexprocessing

TextureStore

PGR

Page 25: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Architektura grafického systému

Grafický HW se vyvíjel „od konce“ ~1991 První byl HW rasterizátor (pixelů je nejvíc) 1999 Poté geometrie (vertex processing)

– HW transform & lighting (T&L) - GeForce 256– fix-pipeline byla omezením

2000 shadery => GPU lze programovat– dataflow architektura – výpočet se spustí, když dorazí data– na rozdíl od CPU, které je sériové, řízeno programem– data nevědí nic o sousedech

2006 unifikované procesory (streaming processor) ~2007 Použití GPU pro negrafické výpočty GPGPU

CUDA, CTM, OpenCL,…PGR

Page 26: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Hrubé schéma OpenGL se shadery

PrimitiveAssembly

and Rasterization

FragmentShader

Fragment operations

VertexData

PixelData

VertexShader

TextureStore

Každá aplikace definuje dva programy (tzv. shadery): vertex shader (VS)

program zapsaný v jazyku GLSL zpracovává každý vrchol

fragment shader (FS)program zapsaný v GLSL zpracovává tzv. fragment

OpenGL verze 3.1

Page 27: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Grafická rozhraní, knihovna OpenGL, GLUT

Page 28: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Co je OpenGL?

Grafická knihovna (Open Graphics Library)

• API = SW rozhraní k rastrovému grafickému HW• nezávislé na OS a na použitém HW• poskytuje nástroje na vykreslení 3D dat a textur do 2D• nestará se o okna, události, formáty souborů,…

• Odnože OpenGL WebGL – pro web OpenGL ES – pro mobily, navigace, …

PGR

Page 29: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Co je OpenGL?

minimální knihovna geometrická primitiva

(body, úsečky, trojúhelníky, pásy troj.…) obrazová primitiva

(rastrové obrázky) – textury předává balíky dat grafické kartě (GPU)

• vrcholy primitiv - základem všech primitiv je bod • textury • programy (shadery)• zapíná a vypíná jednotlivé funkce

PGR

Page 30: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Výhody OpenGL

Jednoduchost Konzistentní implementace & design Rozsáhlá dokumentace Přenositelnost Další rozvoj je dán konsorciem firem Otevřenost a rozšiřitelnost!!

• výrobci HW mohou rozšiřovat funkcionalitu sami(viz GL Extensions)

• např. v Direct3D je všechno vydáno na „milost a nemilost“ Microsoftu, který jediný spravuje a aktualizuje Direct3D

PGR

Page 31: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Knihovny kolem OpenGL (1)

OpenGL

aplikační program

Aplikace závislá na operačním systému

Operační systém X, Win32, Mac O/S

ovladače

Courtesy Siggraph2004 Course 29

hardware (periferie, GPU,…)

PGR

Page 32: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Knihovny kolem OpenGL (2)

Správa oken, GUI

OpenGLOperační systém X, Win32, Mac O/S

ovladače

aplikační program

Courtesy Siggraph2004 Course 29

Aplikace nezávislá na operačním systému

PGR

hardware (periferie, GPU,…)

Page 33: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Knihovny kolem OpenGL (3)

Správa oken / GUI GLUT FreeGLUT SDL …

PGR

Page 34: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Evoluce OpenGL

1994 - OpenGL 1.0 - fixní proudové zpracování (“fixed pipeline”) 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti

zrušit staré funkce 2009 - OpenGL 3.1 - kompletně odstraněno fixní proudové

zpracování, nutnost použití „shaders“ 2010 - OpenGL 4.0 - řízení teselace přímo na GPU, volání funkcí

(podprogramů), externí API, atd. 2014 - OpenGL 4.5 - podpora vícevláknových aplikací, robustnost,

emulace DX11, atd. 2016 – Vulkan 1.0 – portabilita desktopy - mobilní zařízení

Podrobněji zpracováno na:http://en.wikipedia.org/wiki/OpenGL

PGR

Page 35: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

OpenGL 3.1, březen 2009

PGR

FragmentShader Blending

VertexData

PixelData

VertexShader

TextureStore

PrimitiveSetup and

Rasterization

Page 36: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

OpenGL 3.2, srpen 2009

PGR

FragmentShader Blending

VertexData

PixelData

VertexShader

TextureStore

GeometryShader

PrimitiveSetup and Rasterizati

on

Page 37: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

OpenGL 4.1, březen 2010

PGR

PrimitiveSetup and

Rasterization

FragmentShader Blending

VertexData

PixelData

VertexShader

TextureStore

GeometryShader

TessellationControlShader

TessellationEvaluation

Shader

Page 38: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Kontext a profily OpenGL

Profily (context profiles)• Od verze > 3.0 • Určují verzi OpenGL a množinu použitelných příkazů• Dva typy profilu „core“ a „compatible“

PGR

Context Type Profile Description

Fullcore

Všechny funkce dané verze OpenGL (i ty, označené jako zavržené, ale bez zrušených funkcí)

compatible Všechny funkce ze všech předchozích verzí OpenGL (full v OpenGL 3.0)

Forward Compatible

core Pouze nezavržené funkce dané verze OpenGL

compatible Není podporován

Page 39: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Syntaxe příkazů v OpenGL

Konstanty („Constants“) Velká písmena, prefix GL_ Například: GL_COLOR_BUFFER_BIT, GL_DEPTH_TEST

Datové typy Malá písmena s prefixem GL Například: GLfloat, GLbyte

Volání procedur a funkcí: Malá písmena, první velké, prefix gl Například: glCreateProgram()

gl<command name>[<num> <type> [v]]( parameter(s) );

př. glUniform1f( index, 5.8f);

double attrib_array[3] = {1.0, 5.0, 6.0};glUniform3fv (index, attrib_array);

prefix glPočet parametrů

- celé číslo

suffix

Datový typparametrů

(další slajd)Parametry

oddělené čárkou

“v” pokud je parametrem ukazatel do pole

PGR

Page 40: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Datové typy parametrů příkazů

Suffix Datový typ Datový typ v ANSI C OpenGL definice

b 8bit integer signed char GLbytes 16bit integer short GLshorti 32bit integer long GLint, GLsizei

f 32bit float float GLfloat, GLclampfd 64bit float double GLdouble, GLclampd

ub 8bit unsigned int unsigned char GLubyte, GLbooleanus 16bit unsigned int unsigned short GLushortui 32bit unsigned int unsigned long GLunit, GLenum, GLbitfield

i64 64bit integer GLint64

ui64 64bit unsigned int

(long long, _int64)

GLunit64

PGR

Page 41: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

OpenGL jako automat (state machine)

OpenGL je automat – v každém okamžiku má definován svůj vnitřní stav – proto ne stavový automat !!!

• Vnitřní stav je definován hodnotami vnitřních proměnných• Pokud je nezměníme, mají své iniciální hodnoty • Tyto proměnné lze nastavovat a ptát se na jejich hodnotu• Např. zapnutí hloubkového testu

PGR

Page 42: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Nastavení a získání hodnoty stavové proměnné

Nastavení stavu – logická hodnota glEnable(GL_MULTISAMPLE);glDisable(GL_MULTISAMPLE);

Získání stavubool glIsEnabled(GL_CULL_FACE);

Získání stavu jedné či více hodnot:glGetBooleanv(GLenum pname, GLboolean * params);glGetFloatv( GLenum pname, GLfloat * params);glGetIntegerv(GLenum pname, GLint * params);glGetDoublev( GLenum pname, GLdouble * params);

PGR

Page 43: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Zpracování chyb v OpenGL

OpenGL detekuje jen minimum z možných chyb Kontrola všeho by byla příliš časově náročná Zapamatuje si první chybu, která nastala Každá chyba má svůj vlastní číselný kód a jemu přiřazenou

symbolickou konstantu:• GL_NO_ERROR no problem, OK• GL_INVALID_ENUM enum value out of range.• GL_INVALID_VALUE numeric argument is out of range• GL_INVALID_OPERATION illegal operation in current state• GL_INVALID_FRAMEBUFFER_OPERATION

offending command for current state• GL_OUT_OF_MEMORY not enough memory to execute

the command

GLenum glGetError(void);

PGR

Page 44: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

Zpracování chyb v OpenGL

OpenGL Debug extension Od OpenGL 4.3. v jádře Mechanismus nahrazující glGetError() Zavádí dva přístupy

• Frontu ladících zpráv (message log)• Mechanizmus zpětných volání pro vybrané chyby (callbacks)

PGR

Page 45: Programování grafiky ÚVOD - cvut.cz · 2004 - OpenGL 2.0 - programovatelnost pomocí tzv. „shaders“ 2008 - OpenGL 3.0 - zavedení dopředné kompatibility a možnosti zrušit

OpenGL odkazy

http://www.opengl.org/dokumentace, odkazy na programy,…

http://www.khronos.org/vývoj, schvalování implementací (OpenGL compliant)

http://www.sgi.com/licence pro HW

Ondřej Karlík - Corona renderer: Making of production-ready renderer in 3dsMAX, Přednáška, Speciální seminář z počítačové grafiky, 20. 10. 2011

PGR


Recommended