Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 25. únor 2012, 22:58:46 Předmět: |
|
|
frca napsal: |
Tak udělej kompromis: Na linuxu holt budou loadovací obrazovky statické a budou se hýbat jen na windows (tento z mého pohledu detail můžeš koneckonců dodělat později i na linux, až zjistíš, jak). |
No, to bych mohl.
Ale spíš vymyslím něco jiného, aby to vypadalo stejně na obou platformách. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 25. únor 2012, 23:01:54 Předmět: |
|
|
nou napsal: |
a ako si vytvaras okno. sam pomocou glx alebo mas na to framework. pokial si spominam tusim si pouzil SDL co dost efektivne brani pristupovat poriadne k tvorbe kontextu. |
Přes SDL.
V SDL jsou nějaké system specific struktury a funkce, přes které se mohu dostat až na kontext. Pro windows mohu získat HDC a HGLRC, což jsem použil při změně rozlišení, na Linuxech jsem schopen dostat Display a Window. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 25. únor 2012, 23:57:09 Předmět: |
|
|
Moc to řešíte, disk je víc jak stokrát pomalejší než RAM, takže v 2. vlákně stačí načíst z disku, do 3D API to hodíte v hlavním vlákně. Jo, trochu to trhne, ale stokrát míň, než kdybyste to v hlavním vlákně načítali z disku. _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 26. únor 2012, 00:06:32 Předmět: |
|
|
Tak jsem to nakonec udělal jak navrhoval frca. Ve Windows to bude obstarávat druhé vlákno (pokud projdou testy na vícero PC) a na Linuxech to bude statické (popř. vymyslím jiný loading screen, třeba s progress barem). _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Crypton

Založen: 14. 05. 2009 Příspěvky: 306 Bydliště: The Void
|
Zaslal: 26. únor 2012, 10:47:38 Předmět: |
|
|
Zbytečně moc komplikované. Mohl si předtím alespoň zkusit to, co jsem ti navrhoval já, a nebo teď i Ladis. A bude ti to běžet na všech OS stejně. Ale když už to máš "funkční", tak je asi zbytečné to zase překopávat.  _________________
 |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 26. únor 2012, 10:55:58 Předmět: |
|
|
ono problem bude v SDL. mne sharovanie textur v OpenGL fungovalo pri pouziti Qt. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 26. únor 2012, 11:20:26 Předmět: |
|
|
Myslím že v SDL problém není. Viděl bych problém v tom, že na linuxech volání gl není thread-safe, protože shadery se mi načítat povedlo, ale textury ne...funkce glGenTextures generovala index 0. U shaderů se mi indexy programů generovali v pohodě...
Teď to řešit už asi nebudu. Přidám ještě k loadingu nějaký ukazatel stavu načtení, takže bude na linuxech alespoň trochu poznat, že se něco děje... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 27. únor 2012, 09:08:40 Předmět: |
|
|
OpenGL nie je thread-safe na nijakej platforme. Vsetci ti poradili spravne, ze ho nemas volat z viacerych vlaken, len z hlavneho. Sharovat contexty je v tvojom pripade uplne zbytocne. Zbytocne si pridas problemy v buducnosti. Stoji to za to? _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 27. únor 2012, 10:05:05 Předmět: |
|
|
No a jak vysvětlíš to, že na Windows to funguje bez problému? A kdyby takováhle věc nebyla možná, asi by to v dnešních hrách vůbec nebylo, ne? A pochybuji, že si vývojáři obalí všechny opengl volání např. mutexem. To mi připadá jako úplná blbost.
Budu to testovat ještě na Vistách a W7, co to udělá, ale myslím, že to bude fungovat správně. Pro Linux jsem udělal to, že se v každém snímku (možná udělám po několika snímcích) načte nový zdroj, takže pokud ty zdroje budou malé, ozubená kola se také trochu budou točit (problém třeba přijde až budu načítat herní mapu nebo generovat routovací tabulku pro navigační mesh, tam se to třeba 5s vůbec nehne).
Tohle je stejně jen taková fíčura, kterou jsem si chtěl dávno vyzkoušet. Možná ji nakonec ve výsledku vůbec používat nebudu. Jen jsem to chtěl zkusit... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 27. únor 2012, 10:09:39 Předmět: |
|
|
no neviem ak naozaj mas dva zdielane kontexty tak by to fungovat malo. mozno by som po nacitani zdrojov zavolal glFinish(). je dost mozne ze preto sa ti nenacitali zdroje. potom sa ale odporuca pouzit sync objekty cez glFenceSync() a glWaitSync() _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 27. únor 2012, 10:54:04 Předmět: |
|
|
Vyhrabal jsem starý program, který ukazuje "Threaded-OpenGL 101" na XLib a jede úplně bez problému (generuje texturu na vlákně vedle, a poté nastaví boolean (šlo by to i lépe), používá XLib, glX a POSIX-threads (pthreads) - není vlastně potřeba žádné šílenosti, nedejbože používat glFinish )
Později ho někam upnu... _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 27. únor 2012, 11:45:25 Předmět: |
|
|
Oki, to by bylo fajn. Díky. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 27. únor 2012, 13:55:58 Předmět: |
|
|
VODA napsal: |
No a jak vysvětlíš to, že na Windows to funguje bez problému? A kdyby takováhle věc nebyla možná, asi by to v dnešních hrách vůbec nebylo, ne? |
Dělá se to, ale takhle, jak psal nou:
nou napsal: |
...tak proste v main vlakne namapovat buffer, pointer poslat do load vlakna, nacitat do namapovaneho priestoru data, poslat signal ze uz jea nasledne zase v opengl vlakne odmapovat.
|
Takhle se to dělalo např. v jedné velké nejmenované hře z gangsterského prostředí. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
|
Návrat nahoru |
|
 |
|