.[ ČeskéHry.cz ].
Vícevláknový loading zdrojů
Jdi na stránku Předchozí  1, 2, 3, 4  Další
 
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
VODA



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

PříspěvekZaslal: 25. únor 2012, 22:58:46    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



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

PříspěvekZaslal: 25. únor 2012, 23:01:54    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 25. únor 2012, 23:57:09    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



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

PříspěvekZaslal: 26. únor 2012, 00:06:32    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 26. únor 2012, 10:47:38    Předmět: Odpovědět s citátem

Zbytečně moc komplikované. Laughing 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. Wink
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



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

PříspěvekZaslal: 26. únor 2012, 10:55:58    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



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

PříspěvekZaslal: 26. únor 2012, 11:20:26    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



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

PříspěvekZaslal: 27. únor 2012, 09:08:40    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



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

PříspěvekZaslal: 27. únor 2012, 10:05:05    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



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

PříspěvekZaslal: 27. únor 2012, 10:09:39    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 27. únor 2012, 10:54:04    Předmět: Odpovědět s citátem

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 Shocked )

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
VODA



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

PříspěvekZaslal: 27. únor 2012, 11:45:25    Předmět: Odpovědět s citátem

Oki, to by bylo fajn. Díky.
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 27. únor 2012, 13:55:58    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



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

PříspěvekZaslal: 27. únor 2012, 17:46:04    Předmět: Odpovědět s citátem

takze uz viem v com je problem http://tronche.com/gui/x/xlib/display/XInitThreads.html
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



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

PříspěvekZaslal: 27. únor 2012, 18:07:50    Předmět: Odpovědět s citátem

Hmm...zajímavé. Mohl bych to zkusit...
Díky. Very Happy

EDIT: Nechal jsem se napálit, když zavolám tuhle funkci tak pak musím ještě správně použít http://tronche.com/gui/x/xlib/display/XLockDisplay.html a http://tronche.com/gui/x/xlib/display/XUnlockDisplay.html...
Nebo ne?
_________________
Opravdovost se pojí s trýzní...
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
Jdi na stránku Předchozí  1, 2, 3, 4  Další
Strana 2 z 4

 
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