dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

DirectX un Managed (.NET) kods
Goto page 1, 2, 3, 4, 5  Next
 
dev.gamez.lv Forum Index -> Microsoft DirectX
View previous topic :: View next topic  
Author Message
Vilx-



Joined: 10 Nov 2007
Posts: 34

PostPosted: Mon Nov 19, 2007 10:40 pm    Post subject: DirectX un Managed (.NET) kods

Kam ir pieredze ar DirectX izstrādi menedžētajā (.NET) vidē? Gribētos dzirdēt kādas nebūt atsauksmes un viedokļus par tēmu.

Pie M$ atradu trīs lietas, kas varētu kandidēt: MDX 2.0, WPF un XNA.

MDX ir oficiāli pamests pasākums, taču tas ir vistuvākais pašam DirectX, kas varētu būt tā spožums un posts - runa, protams, ir par klasisko performance vs izstrādes ātrums.

MDX konkurents ir jaunais un spīdošais XNA, ar kuru tagad M$ visiem bāžas augumā (vēl jaunākais GDK, šķiet, nav pieejams Managed programmām). Pats itkā arī sliecos izmantot šo. Mani tikai mulsina tas, ka viņam ir tik liels uzsvars uz XBox360. Protams, ideja jau no marketinga viedokļa ir cēla - radīt platformu, uz kuras būvētās spēles vienlaicīgi spēj strādāt gan uz PC, gan XBox, taču vai no tā necieš spēles, kuras mērķētas tieši PC? Un kādi ir tradeoff'i salīdzinājumā ar MDX?

Par WPF es neko daudz nezinu, taču, cik dažus postus internetā palasījos, tad tā fokuss esot vairāk tieši uz biznesa aplikācijām, un spēlēm tas esot mazāk piemērots. Pats Microsoft arī to nekādi nesaista ar spēļu developmentu, tāpēc laikam šī izvēle diezgan konkrēti nebūs laba. Arī JavaScript var taisīt graujošas spēles - taču tas būs diezgan samudžināts risinājums.

Pats ar DirectX tagad tikai pirmo reizi saskaros. Izlasīju Microsoft MDX tutoriāļus, kā arī dažus tutoriāļus netā, un sapratu pašus pamatus. Tālākais jau nāks ar darīšanu. Tomēr, pirms ķeros vērsim aiz ragiem, gribētos tad īsti izvēlēties, ar ko tad strādāt. Itkā negribētos taisīt jaunas lietas ar novecojušiem rīkiem, taču varbūt arī tiem ir vērā ņemamas priekšrocības?
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Nov 19, 2007 10:51 pm    Post subject:

MDX2 microsofts šķiet vispār nav oficiāli supportējis. Tas vienmēr bijis un ir kautkāda beta/preview stadijā. Tas noteikti nav variants. Oficiāli bija supportēts MDX 1.1, bet tas jau arī ir pamests liekas kopš pagājušā gada. Tā vietā MS piedāvā lietot XNA. Tas savukārt ir diezgan jauks, vismaz iesācējiem un Indago stila spēlēm. Taču ja grib taisīt ūbermodernu FPS, tad advancētākas lietas tur trūkst. XNA noteikti der apdomā kā variantu.

Par WPF neko nezinu.

Taču zinu vēl vienu alternatīvu: SlimDX. Dažu prasmīgu programmētāju projekts, kas nowrapo jaunākos DirectX 9 un pat 10 zem .NET 2.0 freimworka. Visa source ir pieejama C++/CLI valodā. Tas patreiz tiek aktīvi developēts (svnā kommiti tur ir vairākas reizes nedēļā), taču jau patlaban tas ir diezgan lietojamā stāvoklī. Un ja nav, tad vienmēr var pats pielabot. SlimDX API ir diezgan daudz pietuvināts C++ DirectX API, tb visas klases un to funkcionalitāte ir praktiski tā pati.

Pats neko nopietnu gan neesmu taisījis .NET'ā ar DX, taču esmu nedaudz aplūkojis šos API (uzrakstot sīkas programmeles), lai gūtu priekšstatu kādas iespējas ir pieejamas .NET'ā.
Back to top
View user's profile Send e-mail
Vilx-



Joined: 10 Nov 2007
Posts: 34

PostPosted: Tue Nov 20, 2007 12:22 am    Post subject:

Hmm... izskatās, ka XNA varētu būt sakarīgākā izvēle patiesi. Argumenti, kurus atradu SlimDX wiki, kas veicināja manu vieokli:
  • SlimDX ir nīkulīga dokumentācija - kā iesācējam, tā ir nāve;
  • MDX ir mānīgi bugi, kuri izlien jokainās situācijās - man ar tiem būs grūti cīnīties
Starp citu - viena lieta, ar ko (manuprāt) MDX ir labāks par SlimDX - paši M$ saka, ka viņu MDX neizmanto COM+ interfeisus, kurus izmanto "parastās" DirectX aplikācijas (C++ kā arī SlimDX). Tā kā tiek ieekonomēts viens līmenis, tad process kļūst ātrāks. Tā kā XNA kājas aug ārā no tā paša MDX, tad domāju, ka tur ir tas pats.

Nu, tiesa, SlimDX atradu arī argumentus pret XNA - obligāti nepieciešamie šeideri, kā arī skumīgs atbalsts skaņai, inputam un tīklam. Taču tās, manuprāt, ir nenozīmīgākas problēmas, jo skaņai var izmantot arī citas bibliotēkas (vai pat tos pašu MDX/SlimDX); inputam man pietiks ar klavieri un peli; kā arī tīkla programmēšanai pašā .NET jau ir gana labs atbalsts. (Ko vispār tas DirectPlay tādu īpašu piedāvāja? Confused)
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Nov 20, 2007 12:53 am    Post subject:

Quote:
paši M$ saka, ka viņu MDX neizmanto COM+ interfeisus

Es tam neticu. Tikko apskatījos Microsoft.DirectX.Direct3D.dll (WINDOWs\Microsoft.NET\... direktorijā) importus. Tas importē no d3d9.dll faila funkciju Direct3DCreate9. Tātad izmanto gan COM+. Tieši tas pats ir ar XNA (Microsoft.Xna.Framework.dll fails). Tas pat papildus importē CoCreateInstance no ole32.dll :)

Vilx- wrote:
SlimDX ir nīkulīga dokumentācija

Cik es skatījos SlimDX, tad man pilnīgi pietika ar C++ API dokumentāciju + intellisense.

Quote:
Ko vispār tas DirectPlay tādu īpašu piedāvāja?

DirecPlay ir viens liels mēsls. imho to jau neviens vairs labu laiku neizmanto.

Ar skaņu un tīklu, ja tu neorientējies speciāli uz xbox'i, nav tik traki XNĀ. Var izmantot parastās .NET bibliotēkas vai 3rdpart dll'us. .NET'ā spēles tīkla daļai ieteiktu paskatīties uz http://code.google.com/p/lidgren-library-network/ (bibliotēka nedaudz augstāk par parastu soketu līmeni). A par skaņu visdrīzāk es ņemtu ogg vorbis, vienalga vai xna, vai mdx, vai slimdx. Viss tas MS'iskais XACT man kautkā diezgan nesmuks izskatās, vismaz pagaidām.
Back to top
View user's profile Send e-mail
Vilx-



Joined: 10 Nov 2007
Posts: 34

PostPosted: Tue Nov 20, 2007 3:06 am    Post subject:

Nu, tad vai nu Microsoft melo, vai arī es neesmu uztvēris viņu dziļo domu. Razz
Microsoft wrote:
By eliminating the Component Object Model (COM) interoperability layer, DirectX 9.0 for Managed Code improves performance.
Taču, principā, laikam jau tam nav nozīmes. Hmm... OK, tad, vai ir kāds labs iemesls, kāpēc neizmantot XNA? T.i. ko es tieši zaudēšu? Augšup minētie iemesli (PixelShader nepieciešamība + skaņas/tīkla/inputa trūkumi) neskaitās.

Pievienots: Ā, un ar ko OGG ir krutāks par, teiksim, MP3? Kaut arī - vispār, man pat personīgi vislabāk patiktu izmantot APE/FLAC, jo mūsdienās vietas ietilpība jau ir otrajā vietā aiz kvalitātes. Wink Nu, vismaz mūzikai noteikti.
Back to top
View user's profile
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Tue Nov 20, 2007 8:00 am    Post subject:

Pixel Sahder nepieciesamiiba tevi neuztrauks Razz Shaderi nav tik gruuti kaa dazam labam te liekaas xD XNA da best kas ir un tas atskiriibaa no MDX nav wraperis un turklaat xnai kaut kaadi slimDX or whatever nestaav klaat... Lieto drosi un posto drosi jautaajumus forumaa, vareesu paliidzeet, lietoju to xnu no beta versijas jau Twisted Evil
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Nov 20, 2007 8:20 am    Post subject:

Vilx- wrote:
Pievienots: Ā, un ar ko OGG ir krutāks par, teiksim, MP3?

Atvērts standarts un brīva lietojamība. http://mp3licensing.com/help/index.html
Bet ja nu tas īpaši neuztrauc, tad jau nav svarīgi...
Taču ogg ir arī labāka kvalitāte pie vienāda bitreita.

Quote:
Kaut arī - vispār, man pat personīgi vislabāk patiktu izmantot APE/FLAC,

Man jau arī labāk patikt, taču pamatīgs mīnuss ir izmērs... Tomēr ap 40mb par vienu dziesmu ir drusku par daudz. Padomā - ap 8 dziesmas = virs 300mb.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Tue Nov 20, 2007 8:35 am    Post subject:

Vilx- wrote:
Tā kā XNA kājas aug ārā no tā paša MDX, tad domāju, ka tur ir tas pats.


Nu neaug gan - XNA nav pilniigi nekaada sakara ar MDX - mdx ir wraperis - XNA - nav.

Vilx- wrote:

Nu, tiesa, SlimDX atradu arī argumentus pret XNA - obligāti nepieciešamie šeideri, kā arī skumīgs atbalsts skaņai, inputam un tīklam. Taču tās, manuprāt, ir nenozīmīgākas problēmas, jo skaņai var izmantot arī citas bibliotēkas (vai pat tos pašu MDX/SlimDX); inputam man pietiks ar klavieri un peli; kā arī tīkla programmēšanai pašā .NET jau ir gana labs atbalsts. (Ko vispār tas DirectPlay tādu īpašu piedāvāja? Confused)


Inputam nu nemaz nav skumiigs atbalsts.. kur tu to raavi? Un par inputu runaajot xna atbalsta arii xbox360 joistika inputu kaa arii developeet speeles prieks xbox360 Tiikls buus - XNA 2.0 versijaa Razz un btw 2.0 jau ir beta! So kachaa tik nost un tiiiklojies, kameer cepsi savu ne-tiikla dalju beta jau buus ne-beta Laughing
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Nov 20, 2007 8:47 am    Post subject:

Storm wrote:
Nu neaug gan - XNA nav pilniigi nekaada sakara ar MDX - mdx ir wraperis - XNA - nav.

Kā nu nav? Kapēc tad Microsoft.Xna.Framework.dll fails importē Direct3DCreate9 funkciju no d3d9.dll faila?

Quote:
Tiikls buus - XNA 2.0 versijaa :P un btw 2.0 jau ir beta!

Neesmu vēl apskatījis, taču lasīju, ka nebūs īpaši labs tīkla supports, vismaz pirmajā piegājienā. Būs tik caur to Windows (vai Microsoft) Live vai kā viņu tur sauca.

Quote:
turklaat xnai kaut kaadi slimDX or whatever nestaav klaat...

Un kāpēc? Argumenti kādi, kāpēc tas nestāv klāt? Ja tas ir tavs subjektīvais viedoklis, tad ok, lai ir, bet absolūtos terminos runājot derētu tomēr kādu pamatotu argumentu minēt. Piemēram, pēc manas pieredzes, tas XNA tomēr nestāv klāt pilnam C++ DirectX API (SlimDX ir gandrīz tieši tas pats), bet nu tas varbūt tikai tāpēc, ka man ir augstākas prasības pret to nekā iesācējam.

Un par šeideriem un to nepieciešamību runājot. Diez vai tas ir mīnuss, ka jālieto tie šeideri - drīzāk daudzko atvieglos developerim. Taču tur jāņem vērtā tava mērķaudiorija. Ja tavos mērķos ir supportēt tos lietotājus, kuriem ir švakās kartes un kautkādas iebūvētās laptopos, tad jā, tas ir mīnuss. Bet ja tu tomēr mērķē uz mūsdienīgāku auditoriju un mūsdienīgāku spēli, tad nekāds mīnuss tas nav.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Tue Nov 20, 2007 9:07 am    Post subject:

Quote:

XNA Framework is a wrapper OVER DirectX9 - so technically speaking you do not choose between them as your title says. Instead you are choosing between C#/XNA Framework and C++/Native DirectX


Prieks kam tad vinji skiiraas no taa mdx XD

Quote:

Neesmu vēl apskatījis, taču lasīju, ka nebūs īpaši labs tīkla supports, vismaz pirmajā piegājienā. Būs tik caur to Windows (vai Microsoft) Live vai kā viņu tur sauca.


Quote:

Networking Support

XNA Game Studio 2.0 (Beta) adds networking support to the XNA Framework. Networking enables developers to create multiplayer games in which players on separate machines can compete with each other or play cooperatively. Networking in the XNA Framework supports both the Windows and Xbox 360 platforms. Multiplayer games can even work across the two platforms.


Argumenti ir - quote 1, labs helps un komunitjs, ar c++ nesaliidzinaami aatraaks developmenta laiks. Un loti svariigi ka to XNA taisa pats Microsoft, kas arii izveidoja DX, es nedomaaju ka kaads speetu uztaisiit labaaku enviromentu prieks DX kaa microsoft pats.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Nov 20, 2007 10:22 am    Post subject:

Storm wrote:
Prieks kam tad vinji skiiraas no taa mdx XD

Nesapratu tevi. Sākumā tu saki, ka XNA nav, tagad ka tas tomēr ir wraperis? Kāpēc tad lai tas būtu arguments XNA labā?

Quote:
ar c++ nesaliidzinaami aatraaks developmenta laiks

Es neprasīju salīdzināt ar C++ - par šo argumentu es nemaz nešaubos (pat ļoti labi zinu kā ir C++'ā programmēt). Es to prasīju salīdzinājumā ar to SlimDX piemēram (par kuru tu saki, ka tam nestāv klāt). Un SlimDX API ir tas pats vien MS Dx'a API, tur nav nekas izgudrots un pārmainīts.

Quote:
Networking Support...

Par to, ka tīkls ir es nešaubos. Es šaubījos par to, vai netiks uzspiests tā Windows Live sistēma, kas LAN spēlēm, piemēram, visu tikai sarežģītu.
Tagad palasījos - LANā tomēr var taisīt tīkla spēli bez problēmām. Vēl ir jautājums par ineta spēlēm.. bet nu laikam nav tik traki, kā sākumā man likās ;)

Tu tikai mani nepārproti - es neapgalvoju, ka XNA nekam neder. Es tikai apgalvoju, ka tas neder man :) Taču no tevis es tikai pagaidām esmu sapratis, ka viss cits (SlimDX, whatever kas cits) nekam neder, ko neesmu sapratis kāpēc :)
Back to top
View user's profile Send e-mail
Vilx-



Joined: 10 Nov 2007
Posts: 34

PostPosted: Tue Nov 20, 2007 10:53 am    Post subject:

Labrīt! :)

XNA kājas aug no MDX diezgan netiešā veidā - viņu team'ā ir viens no galvenajiem MDX izstrādātājiem, un viņi mācās no MDX pieredzes. Plus, tāpat kā MDX, XNA ir wrapperis ap parasto COM+ DirectX. MDX arī tika pamests tieši XNA izveides dēļ, tāpēc var aptuveni teikt, ka XNA ir MDX nākamā paaudze. Nu, bet tas patiesi ir ļoti netieši. Un, vispār - vai tam ir nozīme? :)

Par shaderu nepieciešamību - redz, es īsti nezinu, kam tie shareri ir, un kam nav. XNA vajag vismaz 1.1 versiju, kas (itkā) ir diezgan veca. Bet cik mūsdienās vēl ir tādu karšu, kas to neuztur? Es nezinu. Būtu muļķīgi uztaisīt spēli, kurai vajadzētu krutu karti tikai dēļ tiem shaderiem, ja patiesībā pilnībā pietiktu ar daudz ko mazāk. Rolling Eyes Taču - no otras puses - varbūt nav jēga iespringt uz arhaiskām lietām. :P

Par inputu - tagad nepateikšu, bet kaut kur netā lasīju, ka viņi atbalstot tikai kaut kādus tur ar kaut ko savietojamus kontrolierus, kas (šobrīd) esot tikai Xbox kontrolieri. Taču varbūt tur bija runāts par Force Feedback un džoistiku supportu - un tos es tāpat neizmantošu. Man pietiek ar klavieri un peli. :P

Par tīklu - nu, nez. Es socketus māku noprogrammēt arī iekš C++, un .NET lietas ir vēl atvieglotākas. Nedomāju, ka tur būs problēmas. Plus, .NET 2.0 ir arī visādi remotingi un iebūvētie XML webservisu webserveri, kas to visu padara vienkārši smiekīgi elementāru. Tā kā par to nav ko iespringt.

Par FLAC - nu, jā 40MB - bet kas mūsdienās ir 40MB, kad spēles nāk uz DVD? Rolling Eyes Taču, lai izmantotu FLAC, ir jābūt arī gana kvalitatīvam skaņas avotam (konvertēt no MP3 uz FLAC nav prāta lieta), tā kā šī ideja visticamāk atkritīs jau pašā saknē. :)

Ā - btw - arguments, ka ar XNA var developēt gāmes priekš XBox manā gadījumā neko nedod. Man XBox ir pie kreisās pakaļkājas. Manā mājā konsoļu nav, un šaubos, vai kādreiz būs. Es pats esmu PC piekritējs, un, ja taisīšu spēles, tad tās arī būs PC paredzētas. Tāpēc mani vairāk uztrauca tas, cik labu supportu tas XNA nodrošina priekš PC. Jo esmu dzirdējis arī izteikumus (un pašam jau no sākta gala bija šādas aizdomas), ka unificējot to pasākumu starp XBox un PC, nāksies apgraizīt iespējas PC pusē...
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Nov 20, 2007 11:46 am    Post subject:

Vilx- wrote:
Par shaderu nepieciešamību - redz, es īsti nezinu, kam tie shareri ir, un kam nav.

Ah, nu tā jau cita lieta. Vienkāršoti sakot - pikseļu šeideris ir maza GPU programmiņa, kas darbojas katram pikselim, kas tiek zīmēts uz ekrāna no taviem objektiem. Tā izrēķina vajadzīgo krāsu no ieejas datiem (tekstūras, gaismas, krāsām, normāles, pozīcijas, utt). Vertex šeideris savukārt nosaka to, kā tiks transformētas virsotnes no tava modeļa koordinātēm uz pasaules koordinātēm - vienkāršākā gadījumā pielieto modelview matricu katrai virsotnes pozīcijai un normālei (ja runa ir par 3D telpu). Advancētākā gadījumā ar šeideriem var veikt visādas citas brīnumu lietas (visādus tur postprocessingus).
Reku vari palasīt:
http://www.toymaker.info/Games/html/shaders.htm
http://www.xmission.com/~legalize/book/download/index.html
http://indago.lv/Izstradataji/Raksti/hlsl_gaisma/HLSL_apgaismojums.htm
http://indago.lv/Izstradataji/Raksti/HLSL_Part2/HLSL_apgaismojums2.htm

Quote:
XNA vajag vismaz 1.1 versiju, kas (itkā) ir diezgan veca. Bet cik mūsdienās vēl ir tādu karšu, kas to neuztur?

Ja tev tas ko izsaka, tad 1.1 uztur sākot no Geforce 4 Ti (MX nesuportē!) un Radeon 8500.

Quote:
Par FLAC - nu, jā 40MB - bet kas mūsdienās ir 40MB, kad spēles nāk uz DVD?

Well, ja tu taisies izdod DVD, tad jā - nav probl. Bet ja tiek taisīta primitīva un vienkārša arkāde, tad lai no weba downloadētu tādu kluci.. kautkā dīvaini :)

Quote:
Jo esmu dzirdējis arī izteikumus (un pašam jau no sākta gala bija šādas aizdomas), ka unificējot to pasākumu starp XBox un PC, nāksies apgraizīt iespējas PC pusē...

Varu pieminēt to, ko esmu lasījis gamedev.net forumiņos - tur cilvēki piemin xna performances lietas starp xbox un pc tādā kontekstā, ka spēli optimizējot priekš pc, tā nestrādās uz maksimumu zem xbokša, un arī otrādi. Jo, cik saprotu, tad uz xbokša nav parasts .net freimworks, bet gam .net compact freimworks, kuram ir atškirības darbībā.
Back to top
View user's profile Send e-mail
Vilx-



Joined: 10 Nov 2007
Posts: 34

PostPosted: Tue Nov 20, 2007 12:10 pm    Post subject:

Nu, ja var pietjūnēt priekš PC, tad jau ir bonuss. Wink Taču man interesētu - kas tieši (būtisks) nav pieejams no tām iespējām, kuras PC varētu piedāvāt. Ja tas ir kaut kas dikti advancēts, tad visticamāk es to tāpat neizmantošu. Taču, ja ir kaut kas būtisks pamatos... Nu, teiksim tā - MDX, šķiet, ir drošs variants, bet būs lielāks čakars nekā ar XNA. Vai tas ir tā vērts?

OK, neliels offtopic jautājumiņš - DirectX dokumentācijā lasīju, ka nav labi bieži manīt View/World/Projection matricas. Dikti daudz esot kaut kas jāpārrēķina tam DirectX'am dēļ šitā. Taču kā tad man rīkoties? Ja man ir daudzi objekti (mesh'i), kurus es gribu parādīt uz ekrāna (varbūt pat vairākās kopijās), tad taču man ir jāmaina tā World matrica, lai katrs no viņiem būtu savā vietā, ne? Vai arī efektīvāk ir atlokot vertexbufferi, un samainīt vertexu koordinātas ar rokām? Confused IMHO tam vajadzētu būt vēl trakāk. Tu pieminēji, ka vertex shaderi arī transformē vertexu koordinātas - vai labais stils būtu izmantot tos šādam mērķim?
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Tue Nov 20, 2007 3:52 pm    Post subject:

Vilx- wrote:
Nu, teiksim tā - MDX, šķiet, ir drošs variants

imho mdx nav drošs variants, jo no MS puses netiek vairs supportēts - tātad nav jaunu fīču klāt. C++ API drusku mainās ar katru jauno DX versiju (reizi 3 mēnešos). MDX turpretī nē.

Quote:
OK, neliels offtopic jautājumiņš - DirectX dokumentācijā lasīju, ka nav labi bieži manīt View/World/Projection matricas.

Labi nav bieži mainīt jebko - rendersteitus, šeiderus, piebindotās tekstūras, vertex/indeks-buferus, matricas, utt.. Bet bieži! Ja tev vajag mainīt, tad tās jāmaina.

View matrica tev jāmaina, ja maini kameras pozīciju. Projekcijas matricu gan parasti vajag reti mainīt. Man vairumā gadījumu pietiek ar 3 reizēm katrā kadrā: shadowmap rēķināšanai, normālam 3d renderingam, un ortogrāfiskā projekcija image-space efektiem un 2d gui. Bet tas viss pēc vajadzības. Galvenais nesākt uzstādīt to projekcijas matricu uz katru objektu pa jaunam.

Modeļu pozīciju matricas mainīšanai vēl ir arī cita iespēja. Uz jaunākajām SM3 hardwarēm ir pieejama tāda lieta kā instancing - uz vertex šeideri tiek aizsūtītas visas tās modeļu matricas un, šeiderī dabūjot konkrētā renderējamā objekta indeksu, paņemt tikai vajadzīgo matricu no masīva. http://msdn2.microsoft.com/en-us/library/bb174602.aspx Iepriekš (SM2) nebija pieejami šeiderim tik daudz reģistru, lai aizsūtītu matricas pietiekamā daudzumā. Arī SM3 nav bezizmēra reģistri, tāpēc nāksies zīmēt pa gabaliņam, taču tas vienalga ir izdevīgāk, nekā katru objektu atsevišķi. Uz SM4 hardwares tas ir iespējams vēl advancētākā līmenī ar ģeometrijas šeideri, kur patiešām var objektu n-tos eksemplāros uzzīmēt ar vienu zīmēšanas izsaukumu.

Quote:
Vai arī efektīvāk ir atlokot vertexbufferi, un samainīt vertexu koordinātas ar rokām?

Noteikti nē, tas nav efektīvāk. Jo statiskāks vertex-buferis, jo labāk.

Quote:
Tu pieminēji, ka vertex shaderi arī transformē vertexu koordinātas - vai labais stils būtu izmantot tos šādam mērķim?

Nevis labais stils, bet vienīgais stils :) Tāds jau ir to vertex šeideru mērķis un būtība, ja vien tu nelieto fixed-function pipeline (tb renderēšanu bez šeideriem).

Reku bilde: http://www.xmission.com/~legalize/book/preview/poster/pipeline-9.0.png
Tur ir tas šeideris nosaukts kā Vertex Shader ALU. Un tas var aizstāt visu, kas ir tam labajā pusē tajā pašā rindā.
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Microsoft DirectX All times are GMT + 2 Hours
Goto page 1, 2, 3, 4, 5  Next
Page 1 of 5

 
Jump to:  
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