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
|
Zaslal: 27. únor 2012, 19:18:07 Předmět: |
|
|
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š - 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  _________________ 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, 20:36:40 Předmět: |
|
|
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...  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 27. únor 2012, 21:02:59 Předmět: |
|
|
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).  _________________ 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, 21:10:01 Předmět: |
|
|
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 |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 27. únor 2012, 21:28:34 Předmět: |
|
|
a co takto prejst na SFML http://www.sfml-dev.org/ _________________ 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: 28. únor 2012, 10:49:24 Předmět: |
|
|
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 |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 28. únor 2012, 22:17:47 Předmět: |
|
|
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 |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 28. únor 2012, 22:44:31 Předmět: |
|
|
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 |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 28. únor 2012, 23:14:00 Předmět: |
|
|
Ve virtuálce může být ta virtuální grafika nějaký shit. _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 28. únor 2012, 23:22:45 Předmět: |
|
|
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 |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 28. únor 2012, 23:29:19 Předmět: |
|
|
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.  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
TeaTime
Založen: 17. 06. 2011 Příspěvky: 264
|
Zaslal: 29. únor 2012, 00:38:34 Předmět: |
|
|
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 |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 29. únor 2012, 09:18:13 Předmět: |
|
|
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ů.  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
TeaTime
Založen: 17. 06. 2011 Příspěvky: 264
|
Zaslal: 29. únor 2012, 09:33:21 Předmět: |
|
|
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 |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 29. únor 2012, 09:54:56 Předmět: |
|
|
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 |
|
 |
|