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: 29. srpen 2012, 15:09:24 Předmět: |
|
|
#VODA - já bych osobně neodsuzoval žádný návrhový vzor jako špatný/dobrý. Tato věc je imho dost subjektivní jak k tomu, kdo aplikaci píše, tak k samotnému typu aplikace - jsou aplikace, kde singleton je mnohem méně bolestná cesta jak danou věc dobře napsat (avšak celý engine to zajisté není). _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 29. srpen 2012, 15:28:24 Předmět: |
|
|
Marek napsal: |
1) Textury v OpenGL jsou defaultně nesdílené mezi kontexty, ale dá se při vytvoření kontextu zadat, že textury sdílet chci. Má to ale háček - modifikace nad texturama (např. glTexImage) nemusí být za určitých okolností okamžitě vidět v jiných kontextech.
|
No ... tak to jsem žil až doteď v omylu
Takže využiji možnost a položím jednu OTázku: Doufám, že je možné přepínat kontexty různým oknům, tj. při překreslení zavolat wglMakeCurrent() a pak to odmapovat. Pokud to jde, existuje ekvivalent na Linuxu/OSXu, jak udělat totéž?
Díky. |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 29. srpen 2012, 16:05:12 Předmět: |
|
|
Jenom takový malý dotaz - tohle se již vícekrát řešilo na OpenGL.org i Gamedev.net a také na Devmaster.net ... k věci...
Potřebuješ nutně 4 okna pro 4 viewporty? Nemůžeš je hodit pouze do jednoho (a pracovat s nimi pomocí glViewport?). Bude to mnohem rychlejší než mít více kontextů a v praxi se to takto řeší. Více kontextů se používá především pro multithreaded rendering, a ne rendering více viewportů.
Navíc pokud to budeš mít v 1 kontextu, můžeš celkem chytře využít geometry shadery a kreslit všechny 4 viewporty najednou (pozn. na first-generation gpu s geometry shadery to bude pomalejší). _________________ 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: 29. srpen 2012, 16:38:31 Předmět: |
|
|
Vilem Otte napsal: |
#VODA - já bych osobně neodsuzoval žádný návrhový vzor jako špatný/dobrý. Tato věc je imho dost subjektivní jak k tomu, kdo aplikaci píše, tak k samotnému typu aplikace - jsou aplikace, kde singleton je mnohem méně bolestná cesta jak danou věc dobře napsat (avšak celý engine to zajisté není). |
Psal jsem, že já osobně jsem došel k takovému názoru ...tzn. je to subjektivní...  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 29. srpen 2012, 19:20:28 Předmět: |
|
|
VODA napsal: |
Vilem Otte napsal: |
#VODA - já bych osobně neodsuzoval žádný návrhový vzor jako špatný/dobrý. Tato věc je imho dost subjektivní jak k tomu, kdo aplikaci píše, tak k samotnému typu aplikace - jsou aplikace, kde singleton je mnohem méně bolestná cesta jak danou věc dobře napsat (avšak celý engine to zajisté není). |
Psal jsem, že já osobně jsem došel k takovému názoru ...tzn. je to subjektivní...  |
- ale dosel jsi ke spatnemu nazoru - Singleton neni spatny vzor. - jen jsou spatna jeho pouziti, ktera clovek muze ruzne videt v aplikacich, a je opravdu potreba vazit, kdy ma byt neco opravdu globalni a jednou a kdy to ma byt instanciovatelne |
|
Návrat nahoru |
|
 |
VODA

Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 29. srpen 2012, 20:40:02 Předmět: |
|
|
rezna napsal: |
VODA napsal: |
Vilem Otte napsal: |
#VODA - já bych osobně neodsuzoval žádný návrhový vzor jako špatný/dobrý. Tato věc je imho dost subjektivní jak k tomu, kdo aplikaci píše, tak k samotnému typu aplikace - jsou aplikace, kde singleton je mnohem méně bolestná cesta jak danou věc dobře napsat (avšak celý engine to zajisté není). |
Psal jsem, že já osobně jsem došel k takovému názoru ...tzn. je to subjektivní...  |
- ale dosel jsi ke spatnemu nazoru - Singleton neni spatny vzor. - jen jsou spatna jeho pouziti, ktera clovek muze ruzne videt v aplikacich, a je opravdu potreba vazit, kdy ma byt neco opravdu globalni a jednou a kdy to ma byt instanciovatelne |
Hehe, whatever...v jedné verzi mého enginu jsem singletony používal opravdu hodně (ten link na Singleton topic je z té doby), jenže pak jsem prostě přišel na to, že to jde vždy udělat bez toho a róbustněji, tak jsem singleton úplně zavrhl...a jsem spokojen.  _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 30. srpen 2012, 00:52:10 Předmět: |
|
|
V domacich amaterskych podmienkach je ale najdolezitejsia efektivita vynalozeneho casu.
Tzn. radsej zvolit mierne prasackejsie riesenie (namiesto uber-template pakarne), ktore bude jednoduche na pouzivanie, aj ked dany kus kodu clovek pol roka nevidel.
Tym sa nechcem zastavat singletonu, tiez uz som od neho upustil a fakt radsej preferujem posuvanie pointerov na triedy enginu - pretoze je to tak hned zjavne, ze co sa tam deje (za cenu copy-pastenia parametrov).
Kedze si na hre kodim sam, tak nie je riziko, ze ten pointer brutalne zneuzijem. A ak aj hej, tak je to len moj problem
Takze - doma nech mi kod mierne chrochta, ale aspon mu to chrochta produktivne  |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 30. srpen 2012, 08:27:49 Předmět: |
|
|
Vilem Otte napsal: |
Potřebuješ nutně 4 okna pro 4 viewporty? Nemůžeš je hodit pouze do jednoho (a pracovat s nimi pomocí glViewport?). Bude to mnohem rychlejší než mít více kontextů a v praxi se to takto řeší. Více kontextů se používá především pro multithreaded rendering, a ne rendering více viewportů.
|
No výkon u editoru neřeším, stejně zarás pracuješ jenom s jedním oknem.
A zvěrstva jako multithreaded rendering apod. taky ne - ostatně k čemu v malém homegrown oldschool enginu
Navíc se starým GMA 950... Řekl bych, že to většina lidí tady ani nebude považovat za GPU.
Jasně, můžu mít jedno okno a kreslit přes viewport, ale to bych si musel napsat vlastní GUI a to je pro mě jako amatéra s nedostatkem času naprostý overkill.
Ok, jasně, stačilo by si napsat jenom vlastní splitter. Ale ani tomu nehodlám obětovat drahocenný čas.
Chci použít native GUI a prostě mít 4 okna, kam budu kreslit přes GL, toť vše.
Proto se ptám, jestli můžu použít jeden context a přepínat ho. Takže počítám, že ano.
Kdysi jsem to nějak řešil ale to bylo přes DX. Vhledem k přenositelnosti a jednoduchosti jsem přešel na GL, ale nechci tady rozjíždět API flamewar.
Nakonec proč nepodporovat obojí, že? |
|
Návrat nahoru |
|
 |
Jakub Doucek
Založen: 08. 12. 2011 Příspěvky: 14 Bydliště: Pardubice
|
Zaslal: 31. srpen 2012, 06:31:22 Předmět: |
|
|
Od původního tématu bych řekl se už odbočilo úplně někam jinam ale nevadí Rád bych se tu trochu zastal singletonu. Podle mě je to zcela něco jiného, než jen druh globální proměnné. Osobně singleton chápu naprosto jinak. Je to spíš pomůcka (návrhový vzor), která zajistí aby daná třída mohla být instanciována pouze jednou. To se může hodit. Já mám například třídu Application, která inicializuje sdl (nebo jiné api to je fuk) a vytvoří okno aplikace. Tato třída v podstatě znamená aplikaci samotnou, pak už jen záleží co šoupnu do main loopu. Je tedy nesmysl aby tato třída existovala dvakrát. Je blbost aby v jedné aplikaci běželi dvě aplikace. Tak jsem z ní udělal singleton a už se to nemůže stát. Sebevětší neumětel, když bude používat moje knihovny se nemůže dopustit této chyby. Je to prostě něco na způsob jako když píšete const. |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 31. srpen 2012, 06:43:58 Předmět: |
|
|
no a pak prave prijdou ty momenty, kdy clovek potrebuje pustit 2 aplikace v v jednom programu a je v pytli - kamos toto resil, kdyz dodelaval v Qt mail-merge modul pro nejakou DTP aplikaci. Samotny DTP bezelo jako Qt aplikace a udelat v tom druhou soubezne bezici aplikaci jako plugin tez v Qt byl dost opruz, ale nakonec to nejak hacknul
to stejne jsme ted resili v praci. nase 'aplikace' se taky dostala do stavu, kdy se v kodu objevila druha instance objektu, protoze bylo potreba udelat migraci dat mezi dvema verzemi aplikace. A hle, nasly se casti kodu, ktery na to vubec nebyly pripraveny. na spouste mist se pocitalo s tim ze aplikace je jen jedna.
takze singleton jako takovy ano, ma vyznam. ale kod by o tom nemel vedet a mel by pocitat s tim ze instance mohou byt dve. takze vsude poctive predavat. - psalo se to uz ve vedlejsim vlaknu |
|
Návrat nahoru |
|
 |
|