.[ ČeskéHry.cz ].
Jak pracuje OpenGL

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 22. září 2011, 12:38:24    Předmět: Jak pracuje OpenGL Odpovědět s citátem

Zdravim, mám menší dotaz.
Na jaké úrovni se kontroluje přepínání statů?
Např.: Když 10x za sebou zavolám glBindTexture(GL_TEXTURE_2D, id); (myslím stím samím id) pošle se to skutečně 10x do grafiky, nebo to OpenGL nějak odchytí a pošle jen jednou?
Zkrátka asi bych to shrnul, jestli OpenGL kontroluje již nastavený stav?

A ktomu se váže 2. dotaz. Pokud OpenGL nekontroluje nic a "otrocky" provádí co já mu řeknu, má potom cenu dělat tuto optimalizaci v kódu nějakym (jakoby) wraperem, který toto bude kontrolovat a který bude volat OpenGL jen pokud dojde ke změně.

Předem díky za odpovědi.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 22. září 2011, 14:35:31    Předmět: Odpovědět s citátem

Myslim, ze nou alebo eosie to povedia za chvilu s istotou, ale driver to urcite odchyti automaticky. Okrem toho, pri glBindTexture sa nijake data neuploaduju, to sa deje pri glTexImage a podobne, ale to asi vies.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 22. září 2011, 18:16:10    Předmět: Re: Jak pracuje OpenGL Odpovědět s citátem

Poky napsal:
Zdravim, mám menší dotaz.
Na jaké úrovni se kontroluje přepínání statů?
Např.: Když 10x za sebou zavolám glBindTexture(GL_TEXTURE_2D, id); (myslím stím samím id) pošle se to skutečně 10x do grafiky, nebo to OpenGL nějak odchytí a pošle jen jednou?

Pošle jen jednou.

Poky napsal:
Zkrátka asi bych to shrnul, jestli OpenGL kontroluje již nastavený stav?

Spíš jen validuje pouze změněné stavy při glDraw* a vytváří z nich hardwarovou reprezentanci stavů, kterou pak pošle na kartu.

Poky napsal:
A ktomu se váže 2. dotaz. Pokud OpenGL nekontroluje nic a "otrocky" provádí co já mu řeknu, má potom cenu dělat tuto optimalizaci v kódu nějakym (jakoby) wraperem, který toto bude kontrolovat a který bude volat OpenGL jen pokud dojde ke změně.

Každé gl volání v sobě nese nějakou režii. Pokud chceš jen před každé gl volání dát "if (mám tohle volat?)", tak to smysl nemá. Dělat si state management na vyšší úrovni, co odchytí větší dávky redundantních změn stavů smysl má, ale musí to být nenáročné.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1050

PříspěvekZaslal: 22. září 2011, 20:30:06    Předmět: Odpovědět s citátem

hej da sa povedat ze na graficku kartu sa posiela az pri glDraw*. ale videl som niekde takyto test GL wrapera ktory priniesol urcite zrychlenie. ale nebolo to nic dramaticke mozno nejakych 10%.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna