![dev.gamez.lv Forum Index](templates/subSilver/images/logo_phpBB.gif) |
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
programmer
![](http://www.danger.lv/bitbucket/do_not_taunt_the_programmer_150x150.jpg)
Joined: 15 Sep 2006 Posts: 71 Location: Latvija, Limbaži
|
Posted: Thu Sep 30, 2010 12:28 am Post subject: Immediate vs retained mode, DLs and VBOs... |
|
Sveiki, biedri!
Vai triviālas ģeometrijas renderēšanā, izmantojot VBO, iegūst reālu labumu salīdzinot ar immediate mode? Ar triviālu ģeometriju es domāju ko tādu kā vienkāršu GUI sistēmu, kur katram vidžetam ir savs texturēts quads.
Man šķiet mazliet smieklīga doma katram vidžetam veidot savu VBO, kurā noglabāt 4 vertexus..
Jautājums tāpēc, ka OpenGL jaunajā specifikācijā immediate mode un display listi ir novecojuši.. un cik es saprotu, tad uz tā vairs nevajadzētu stutēt turpmāko OpenGL aplikāciju kodu.
Tad kādas ir iespējas, lai renderētu kaut ko īpaši triviālu? VBO nekļūst par lieku overheadu?
Paldies! |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
snake5 Indago dalībnieks
![Indago dalībnieks Indago dalībnieks](https://forums.gamedev.lv/images/ranks/cup2.gif)
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Sep 30, 2010 2:00 am Post subject: |
|
Ja VBO šķiet pārāk sarežģīts (var, btw, lietot tikai vienu VBO visam, ko zīmē), var lietot arī vertex'u masīvus (apmēram tas pats, kas VBO, tikai bez bufferu funkcijām un ar absolūtajiem datu pointer'iem).
Nav gan tikpat ērti kā Direct3D DrawPrimitiveUP (tāpat ļoti daudz funkciju izsaukumu), bet var lieliski iztikt ar to, kas ir, it īpaši, ja lietoti tiek tikai viena veida vertex'i.
VBO variants gan varētu būt par dažām mikrosekundēm ātrāks, bet vertex'u masīvu variantu būs vieglāk implementēt.. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
bubu Indago Uzvarētājs
![Indago Uzvarētājs Indago Uzvarētājs](https://forums.gamedev.lv/images/ranks/cup1.gif)
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Sep 30, 2010 9:15 am Post subject: Re: Immediate vs retained mode, DLs and VBOs... |
|
programmer wrote: | Man šķiet mazliet smieklīga doma katram vidžetam veidot savu VBO, kurā noglabāt 4 vertexus.. |
Katram widgetam to nevajag darīt.
Vajag viena GUI skrīta renderēšanai salasīt visu vertexus/texcoordus/vēl-ko-citu-tev-tur vajag vienā VBO. Un tad to visu zīmēt vienā batchā.
Bet nu neviens tev neliedz izmantot compability profilu un izmantot jebkuru deprecated funkcionalitāti. Nvidia tieši to arī rekomendē.
Vēl ņem vērā arī, ka, citiem OpenGL varientiem, piemēram, OpenGL ES, tādu lietu kā immediate modes vispār nav (kā arī display listu). Tur ir tikai vertex pointeri/buferi. Tas arī ir iemesls kāpēc no tiem izvairīties - ja nu nākotnē portēsi savu spēli uz iOS vai Android'u? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
programmer
![](http://www.danger.lv/bitbucket/do_not_taunt_the_programmer_150x150.jpg)
Joined: 15 Sep 2006 Posts: 71 Location: Latvija, Limbaži
|
Posted: Thu Sep 30, 2010 10:42 am Post subject: |
|
Paldies par atbilēm.
snake5 wrote: | Ja VBO šķiet pārāk sarežģīts (var, btw, lietot tikai vienu VBO visam, ko zīmē), var lietot arī vertex'u masīvus (apmēram tas pats, kas VBO, tikai bez bufferu funkcijām un ar absolūtajiem datu pointer'iem). |
VBO nešķiet pārāk sarežģīts. Es jau sliecos uz tā izmantošanu. Vienīgās šaubas radās par to, vai tas tiešām šājā gadījumā būtu labs variants, jo es neesmu paspējis iedziļināties tā iekšējos darbības principos.
snake5 wrote: | VBO variants gan varētu būt par dažām mikrosekundēm ātrāks, bet vertex'u masīvu variantu būs vieglāk implementēt.. |
Tiešām? Droši vien ne visos scenārijos.. Vispār ir iespējams arī scenārijs, kurā immediate mode vai DL būs ražīgāki par VBO?
bubu wrote: | Vajag viena GUI skrīta renderēšanai salasīt visu vertexus/texcoordus/vēl-ko-citu-tev-tur vajag vienā VBO. |
Tas jau skan labāk. Varētu dot pāris idejas, kā to darīt, ja GUI ir veidots vidžetu hierarhijā?
bubu wrote: | Bet nu neviens tev neliedz izmantot compability profilu un izmantot jebkuru deprecated funkcionalitāti. Nvidia tieši to arī rekomendē. |
Par Nvidia es tieši lasīju, ka viņi negrasās izravēt tā sauktās "deprecated" fīčas, jo nav jēgas atbrīvoties no pilnīgi funkcionālām lietām. Kā es sapratu, tad viņu display listu implementācija esot īpaši optimizēta. Bet kā ir ar citiem, piem. ATI? Uz compatibility mode vienmēr var paļauties?
Vēl pieskaroties display listiem.. tie, atšķirībā no VA un VBO piedāvā iespēju saglabā arī atsevišķus stāvokļus. Stāvokļu kompilēšana listos vispār dod kaut kādu performance gain?
bubu wrote: | Vēl ņem vērā arī, ka, citiem OpenGL varientiem, piemēram, OpenGL ES, tādu lietu kā immediate modes vispār nav (kā arī display listu). Tur ir tikai vertex pointeri/buferi. Tas arī ir iemesls kāpēc no tiem izvairīties - ja nu nākotnē portēsi savu spēli uz iOS vai Android'u? |
To biju palaidis garām.
Nedaudz offtopics, bet kā ir ar portēšanu uz androīda? Varu paturēt lielāko daļu c++ koda nemainīgu, izmantojot NDK, un uzrakstīt java aktiviāti ar SDK? Esmu dzirdējis, ka androīdā iekļautais libstdc++ radot ne mazums problēmas portēšanā. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
snake5 Indago dalībnieks
![Indago dalībnieks Indago dalībnieks](https://forums.gamedev.lv/images/ranks/cup2.gif)
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Sep 30, 2010 2:39 pm Post subject: |
|
Quote: | Vispār ir iespējams arī scenārijs, kurā immediate mode vai DL būs ražīgāki par VBO? |
Tas ir funkciju izsaukumu skaita un OpenGL implementācijas jautājums. Bet it kā nevajadzētu būt - viņi dara apmēram vienu un to pašu darbu.
Quote: | Tas jau skan labāk. Varētu dot pāris idejas, kā to darīt, ja GUI ir veidots vidžetu hierarhijā? |
Ejot cauri zīmēšanas funkcijām sapildi RAM bufferi (vertex'u vektoru vai ko tādu), pārnes informāciju uz GL bufferi (VRAM) un zīmē.
Quote: | Uz compatibility mode vienmēr var paļauties? |
Jāstrādā būtu. Bet cik ātri - neviens negarantēs. Bet nav problēmu ar vertex'u masīviem strādāt.
Quote: | Stāvokļu kompilēšana listos vispār dod kaut kādu performance gain? |
Ar VA/VBO neko daudz nedos. Ja ir doma lietot "compatibility mode" un immediate mode zīmēšanu, tad kaut ko varētu dot. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
bubu Indago Uzvarētājs
![Indago Uzvarētājs Indago Uzvarētājs](https://forums.gamedev.lv/images/ranks/cup1.gif)
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Sep 30, 2010 3:31 pm Post subject: |
|
programmer wrote: | Tiešām? Droši vien ne visos scenārijos.. Vispār ir iespējams arī scenārijs, kurā immediate mode vai DL būs ražīgāki par VBO? |
Uz Nvidia tas ir gandrīz vienmēr - DL ir vai nu ekvivalenti, vai mikrosekundes ātrāki par VBO. Tas tāpēc, ka draiveris optimizē tavu sabāzto stafu iekš DL. VBO tas optimizē mazāk, jo šis jau nezin - varbūt vēlāk tu gribēsi dabūt datus atpakaļ. Par ATI - tieši pretēji. Viņi DL neoptimizē.
Quote: | Bet kā ir ar citiem, piem. ATI? Uz compatibility mode vienmēr var paļauties? |
Jā vari. ATI jau nesāks tagad rakstīt tādu draiveri uz kuru neviena vecā spēle (Quake3/Doom4/utt) neies. Tā ka compability mode nekur nemirs. Vienīgais, kas var notikt - šie var izdomāt nerakstīt jauno videokaršu fīčas compability profilā, bet tikai corē.
Quote: | Stāvokļu kompilēšana listos vispār dod kaut kādu performance gain? |
Teorētiski - jā. Praktiski nenozīmīgi maz. Daudz vairāk ieguvumu būs no VBO lejouta / tekstūru formātu / šeideru optimizēšanas.
Quote: | Nedaudz offtopics, bet kā ir ar portēšanu uz androīda? Varu paturēt lielāko daļu c++ koda nemainīgu, izmantojot NDK, un uzrakstīt java aktiviāti ar SDK? |
Jā, tieši tā vari darīt. Ar STL nav problēmas. Ir neoficiālais ports, kurā ir iekļauts pilnvērtīgs C++ - RTTI, Exceptioni, STL. Pats to izmantoju darbā Androīdam netriviāla projekta (ne spēles) kompilēšanai, kurš izmanto visādas netriviālas C++ lietas - STL/RTTI/dynamic_cast. Viss strādā bez problēmām. Reku links: http://www.crystax.net/android/ndk.php |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
programmer
![](http://www.danger.lv/bitbucket/do_not_taunt_the_programmer_150x150.jpg)
Joined: 15 Sep 2006 Posts: 71 Location: Latvija, Limbaži
|
Posted: Thu Sep 30, 2010 4:12 pm Post subject: |
|
Nu tās lietas ir skaidrākas. Paldies! Mēģināšu lietot VBO.
Tikai vēl viena lieta.. kur varētu atrast konkrētu info par to, kurus GL paplašinājumus kuru modeļu videokartes nodorošina?
Vai arī var vienkārši vadīties pēc videokartes specifikācijā norādītās OpenGL versijas? Es saprotu tā, ka videokarte, kuras specifikācijā ir norādīta viena OpenGL versija, tomēr var spēt nodrošināt jaunākas OpenGL versijas funkcionalitāti caur paplašinājumiem. Tā ir?
Tas neoficiālais NDK ports izskatās labs, būs kaut kad jāpaspēlējas. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
bubu Indago Uzvarētājs
![Indago Uzvarētājs Indago Uzvarētājs](https://forums.gamedev.lv/images/ranks/cup1.gif)
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Sep 30, 2010 6:30 pm Post subject: |
|
Tādu infu skaties ar šo te tūli: http://www.realtech-vr.com/glview/
Var vadīties arī pēc norādītās versijas. Tik citreiz notiek tā - kad videokarti laiž ražošanā pēdējā/jaunākā GL versija ir X. Pēc gada izlaiž GL versiju Y, un izrādās tā videokarte supportē arī šo versiju, jo vajadzēja tai tikai jaunāku draiveri uzrakstī.
Piemēram, ATI HD2xxx/3xxx kartēm uz kārbas rakstīts, ka tās supportē GL 2.1 versiju. Taču ar pašiem jaunākajiem draiveriem tās supportē GL 3.3 versiju. Tas nozīmē, ka tām vari vai nu lietot core/compatibility 3.3 profilu, vai arī 2.1 versiju + paplašinājumus.
Neoficiālais NDK ir izveidots no oficiālā NDK sourcēm. Kad Crystalx NDK vēl nebija taisījis, tad es to pats darīju. Tb nokačāju oficiālā NDK sources, pamainīju build konifgu, lai eneiblotu STL, RTTI un Exceptionus, un uzbildoju to. Sanāca pilnīgs drop in repleisments oficiālajam NDK. CrystalX ir izdarījis tieši to pašu. Es viņam NDK meiling-listēs ~gadu atpakaļ konsultēju kā to pareizāk izdarīt :) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
programmer
![](http://www.danger.lv/bitbucket/do_not_taunt_the_programmer_150x150.jpg)
Joined: 15 Sep 2006 Posts: 71 Location: Latvija, Limbaži
|
Posted: Thu Sep 30, 2010 9:43 pm Post subject: |
|
Tas, šķiet, ir tieši tas, ko meklēju. Paldies!
bubu wrote: | Es viņam NDK meiling-listēs ~gadu atpakaļ konsultēju kā to pareizāk izdarīt ![Smile](images/smiles/icon_smile.gif) |
Nez kāpēc, bet tas mani nemaz nepārsteidz.. Šķiet, ka tev ir ļoti daudz pieredzes visādās lietās. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|