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ň
|
Zaslal: 22. září 2011, 12:38:24 Předmět: Jak pracuje OpenGL |
|
|
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 |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 22. září 2011, 14:35:31 Předmět: |
|
|
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 |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 22. září 2011, 18:16:10 Předmět: Re: Jak pracuje OpenGL |
|
|
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 |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 22. září 2011, 20:30:06 Předmět: |
|
|
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 |
|
 |
|
|
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