.[ Č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
Vilem Otte



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

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

Ne, nepotřebuješ zamykat a odemykat Display - ty totiž na druhém vlákně jen loaduješ a nekreslíš.

Tady je sample aplikace (je trochu starší, přidal jsem pár komentů + hlavičku (kde je i to, jak ji zkompilovat)) - http://pastebin.com/D1QxGfPR. Není to úplně nejlepší způsob (ideálně ti druhé vlákno poběží pořád a bude asynchronně loadovat frontu, kdy po vyprázdění fronty ti dá signál (že je done) a uspí se, dokud nebude muset načítat něco dalšího.

EDIT: Osobně bych se používání SDL raději vyhnul obloukem (zvláště pokud chceš dělat nějaký šílenější threading) - IMHO SDL je super věc na učení a jednodušší aplikace. Ono není primárně určeno pro více-vláknový OpenGL a ani se pro něj nedoporučuje - tam je lepší sáhnout níže. Sice použitím XLib ztratíš možná trochu portabilitu (což není pravda pokud uděláš pár ifdef s WIN32 (příp. taky s APPLE ... bleh) - pak jen na správném místě použít WinApi + WGL a X11 + GLX).

EDIT 2: Kdybys chtěl ale 2 vlákny kreslit do jednoho displeje - tak už se to neobejde bez nějakých mutexů (tady pro načítání je vlastně ani nepotřebuješ Wink - pokud neimplementuješ frontu, pak je to dobré locknout/unlocknout při vkládání nové textury (k načtení) do ní a odebírání textury po načtení z ní.

Tímto způsobem můžeš ostatně celkem snadno naimplementovat funkční megatextury či megameshes Wink
_________________
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, 20:36:40    Předmět: Odpovědět s citátem

Měl jsem to předtím skoro stejně. On je docela problém to napasovat na SDL.
Resp. nedokázal jsem z dat, které mi poskytne SDL dostat FBConfig popř. VisualInfo. Po několika minutách, kdy se mi to i přesto povedlo "nějak" zprovoznit, tak to stejně nefunguje.

Jak říkáš, lepší by bylo použít přímo GLX, ale do toho se mi nechce, linuxáci prostě nebudou mít animovaný loading, Poky stejně říká, že většina lidí si to zahraje na Windows a v tom mu musím dát za pravdu. Stejně je to pro Linuxáky ode mě jen takový bonus, že pro ně kompiluji binárky... Very Happy
_________________
Opravdovost se pojí s trýzní...
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, 21:02:59    Předmět: Odpovědět s citátem

Ok, on "neanimovaný loading" není zas taková featura co je extra důležitá - nicméně, do budoucích projektů je lepší s tím uvažovat (zvlášť, děláš-li s velkým data-setem, který je třeba postupně streamovat ... a přepisovat procedury pro vytvoření okna, získání vstupu, apod. v polovině projektu je dost demotivující a může to docela rozházet kód). Wink
_________________
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, 21:10:01    Předmět: Odpovědět s citátem

Já měl v plánu asi před měsícem zbavit se SDL a vše si napsat sám, ale pak jsem přišel na to, že mi SDL poskytuje většinu věcí, co potřebuji a jen kvůli drobným featurkám se mi nevyplatí to přepisovat. Možná někdy v budoucnu se k myšlence vyhození SDL vrátím...ale teď bych rád dodělal Sollertii na tom, co je.

Díky za kód a za pomoc.
_________________
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, 21:28:34    Předmět: Odpovědět s citátem

a co takto prejst na SFML http://www.sfml-dev.org/
_________________
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: 28. únor 2012, 10:49:24    Předmět: Odpovědět s citátem

Vilem Otte napsal:
Tady je sample aplikace (je trochu starší, přidal jsem pár komentů + hlavičku (kde je i to, jak ji zkompilovat)) - http://pastebin.com/D1QxGfPR.

Nedalo mi to, trochu jsem se pošťoural ve zdrojácích SDL a dostal jsem vše co potřebuji pro to, abych ten kód měl téměř totožný a přesto to nefunguje. Docela mi připadalo divné, když si pomocí funkce glXGetCurrentContext zjistím v hlavním (renderovacím) vlákně jaký kontext je aktivní, tak je aktivní ten z načítacího vlákna, což je podle mě tak trochu blbost. Já myslel, že v tom hlavním vlákně bude aktivní ten původní kontext a v tom druhém (načítacím) ten druhý kterému jsem nasdílel listy...

Nemáš náhodou nějakou binárku toho tvého pro 32bit? Já jen jestli to třeba nemůže dělat VirtualBox...
_________________
Opravdovost se pojí s trýzní...
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: 28. únor 2012, 22:17:47    Předmět: Odpovědět s citátem

Tady jsou binárky kódu, který jsem házel na pastebin:
http://www.otte.cz/binaries.tar.gz

Má v sobe 2 - x64 a x86, x86 je kompilována na obecnou i686 architekturu, x64 na generic architekturu (takže by měly bez problému běžet téměř všude - kde je i686 nebo x64 procesor).

EDIT: Virtual box to vlastně teoreticky dělat může (pokud ti v něm příklady výše nepůjdou, klidně zašli tvoji binárku a já ti ji můžu přímo v linuxech otestovat).
_________________
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: 28. únor 2012, 22:44:31    Předmět: Odpovědět s citátem

Tak ve VBoxu to vypíše tohle:
kód:
OpenGL Warning: XGetVisualInfo returned 0 visuals for 0x96e6150
OpenGL Warning: Retry with 0x8002 returned 0 visuals
OpenGL Warning: XGetVisualInfo returned 0 visuals for 0x96e6228
OpenGL Warning: Retry with 0x8002 returned 0 visuals
OpenGL Warning: XGetVisualInfo returned 0 visuals for 0x209
Neoprávněný přístup do paměti (SIGSEGV)

Takže to klidně virtuálka dělat může.

Můžeš to zkusit zde.
Pokud to bude fungovat, zobrazí se na konci otexturované modely a text...
_________________
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: 28. únor 2012, 23:14:00    Předmět: Odpovědět s citátem

Ve virtuálce může být ta virtuální grafika nějaký shit.
_________________
Award-winning game developer
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: 28. únor 2012, 23:22:45    Předmět: Odpovědět s citátem

Běží úplně bez problémů...

virtuálka to zřejmě nebude mít naimplementované (zajímavé, protože myslím že dokonce i Mesa3D by to mělo bez problémů projít) - jelikož multithreaded OpenGL je driver-specific (možná by nebylo od věci hodit do configuračního souboru flag, zda chce uživatel multithreading).

Teď otestováno na notebooku - Pro informaci:
Systém:
Linux 2.6.32-5-amd64 x86_64 GNU/Linux

GL Driver:
display: :0.0 screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: ATI Mobility Radeon HD 5400 Series
OpenGL version string: 4.2.11399 Compatibility Profile Context
_________________
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: 28. únor 2012, 23:29:19    Předmět: Odpovědět s citátem

Koukám, že bych si měl buď sehnat stroj s nativníma Linuxama nebo lepší emulátor (virtuálku).

Tak díky za otestování, to s tím konfigem pro multithreaded načítání je skvělý nápad. Určitě to tam udělám. Very Happy
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
TeaTime



Založen: 17. 06. 2011
Příspěvky: 264

PříspěvekZaslal: 29. únor 2012, 00:38:34    Předmět: Odpovědět s citátem

Ježiš nejsou to "ty linuxy", ale je to "ten GNU/Linux". Nic ve zlém, jen chci abys věděl, že toto označení je uživateli Linuxu považováno za značně hanlivé.
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: 29. únor 2012, 09:18:13    Předmět: Odpovědět s citátem

Aby se uživatelé Linuxu (GNU/Linuxu) nepos*ali. A víš že mi je vlastně úplně jedno, co uživatelé tohoto OSka považují za hanlivé? Měl bys být spíš rád, že se snažím kompilovat rovněž pro tuto platformu. A že se snažím aby si lidé na obou OSkách mohli zahrát stejnou hru bez rozdílů. Mad
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
TeaTime



Založen: 17. 06. 2011
Příspěvky: 264

PříspěvekZaslal: 29. únor 2012, 09:33:21    Předmět: Odpovědět s citátem

Ok, tak si to urážení aspoň více užiješ, když už teď o tom víš.

Každopádně by mě zajímalo, jak to vlastně děláš, že to kompiluješ pro obě platformy? Používáš nějaký cross-compiler, nějakou automatizaci, nebo to prostě kompiluješ ručně jednou za čas na jiných systémech, než na kterém primárně vyvíjíš?
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: 29. únor 2012, 09:54:56    Předmět: Odpovědět s citátem

Označení "ty linuxy" mi vůbec jako uživateli linuxu nevadí. Nevím co na tom je urážlivé... nicméně k tématu:

Lepší (rozuměj rychlejší) virtuálku než VirtualBox na grafiku asi bohužel neseženeš - protože VirtualBox je v tom momentálně nejlepší. Takže máš vlastně 2 možnosti - buď nainstalovat nativní linuxy na jiný partition, nebo jednoduše implementovat nové featury do obou tak, aby se to zkompilovalo (hodně je kolem okomentovat) a na virtualu to spouštět s nastavením které je vypne. Po dokončení hry to vzít na pár dnů do nativních linuxů a tam tyto featury doladit.
_________________
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
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 3 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