Step into the Z...

DirectX & XNA, OpenGL...
Post Reply
User avatar
Denis
Sajentist on djuti!
Posts: 2618
Joined: Tue Aug 26, 2008 9:35 pm
Smallest prime number bigger than 20: 23

Step into the Z...

Post by Denis » Sun Jan 17, 2010 8:26 pm

Eto, došlo je vrijeme (možda jurim, no nema veze XD) da se počnem igrati s Z-tom dimenzijom prosotra. Mogu bez sumnje reći da nemam blage veze o trećoj dimenziji i objekima u njoj (osim stvari koje se rade u školi). Koji je pravi put za "pravilno" učenje 3D programiranja? Ne znam ni što bih sve pitao, jer ne znam što 3D sve sadrži. Možda najpametnije da pitam:

Kako krenuti s 3D i što je sve potrebno za to?

User avatar
Overseer
Spaaaaaaace!
Spaaaaaaace!
Posts: 593
Joined: Tue Aug 26, 2008 2:02 pm

Re: Step into the Z...

Post by Overseer » Sun Jan 17, 2010 8:35 pm

Poznavanje solidno nekog (po mogućnosti objektno-orijentiranog) jezika poput C++a: najjednostavnije rečeno, da se osjećaš ugodno s pokazivačima, manipulacijom polja (pokazivači u srcu), operator overloadingom, linked listima, nasljeđivanjem, polimorfizmom (uglavnom ova zadnja dva definiraju važnije koncepte OO programiranja, toga si svjestan)... Ako ti je to jasno, znači da su i njihovi jednostavniji elementi ti jasni, nazovimo ih podskupovima.

Potrebno je poznavanje barem srednjo-školske matematike, tu si uključi aritmetiku, matrice, vektore, trigonometriju (! yup, važno), ako se osjećaš avanturistički čak i osnove kvaterniona (korisno kod implementacije kamere npr.)

Uglavnom, većinu ovog već znaš, a ostalo možeš saznati putem... Trebat će ti određeni API s kojim planiraš se upustiti u 3D programiranje, tu znaš što biraš i onda tražiš reference na netu, dokumentacije ili pak knjigu neku o toj temi i učiš i vježbaš i vježbaš i vježbaš... I to je to :D

A na osnovici svega toga, moraš se uhvatiti nativnog Win32 programiranja ako planiraš ili sa OGL-om ili DX-om ići... XNA te manje više poštedi toga, ali je manje rewarding iskustvo u konačnici.
Don't combine bracket and dot syntax in Objective-C, it's bad practice and quite irritating.
There is no such thing as a better graphics API. They are just different. And hot. And sexy. I should stop now.
Your matrices are belong to us.

User avatar
Denis
Sajentist on djuti!
Posts: 2618
Joined: Tue Aug 26, 2008 9:35 pm
Smallest prime number bigger than 20: 23

Re: Step into the Z...

Post by Denis » Sun Jan 17, 2010 9:50 pm

RayDX wrote:Poznavanje solidno nekog (po mogućnosti objektno-orijentiranog) jezika poput C++a: najjednostavnije rečeno, da se osjećaš ugodno s pokazivačima, manipulacijom polja (pokazivači u srcu), operator overloadingom, linked listima, nasljeđivanjem, polimorfizmom (uglavnom ova zadnja dva definiraju važnije koncepte OO programiranja, toga si svjestan)... Ako ti je to jasno, znači da su i njihovi jednostavniji elementi ti jasni, nazovimo ih podskupovima.

Potrebno je poznavanje barem srednjo-školske matematike, tu si uključi aritmetiku, matrice, vektore, trigonometriju (! yup, važno), ako se osjećaš avanturistički čak i osnove kvaterniona (korisno kod implementacije kamere npr.)

Uglavnom, većinu ovog već znaš, a ostalo možeš saznati putem... Trebat će ti određeni API s kojim planiraš se upustiti u 3D programiranje, tu znaš što biraš i onda tražiš reference na netu, dokumentacije ili pak knjigu neku o toj temi i učiš i vježbaš i vježbaš i vježbaš... I to je to :D

A na osnovici svega toga, moraš se uhvatiti nativnog Win32 programiranja ako planiraš ili sa OGL-om ili DX-om ići... XNA te manje više poštedi toga, ali je manje rewarding iskustvo u konačnici.
Koji API preporučaš za počenika i zašto?

User avatar
Overseer
Spaaaaaaace!
Spaaaaaaace!
Posts: 593
Joined: Tue Aug 26, 2008 2:02 pm

Re: Step into the Z...

Post by Overseer » Sun Jan 17, 2010 10:00 pm

DragonSoul wrote:
RayDX wrote:/cut
Koji API preporučaš za počenika i zašto?
Osobno preporučam DirectX jer ga je izrazito lako postaviti, nekad čak i automatski se pri instalaciji uredi, dokumentacija je na jednom mjestu, mnogo primjera, velika mu je primjena. A i nije samo grafički API, nego je kolekcija API-a za sve što ti treba, a ako ti zatreba još štogod lako se pospaja u projekt. Plus, ima mnoštvo knjiga i izvora na tu temu.
Don't combine bracket and dot syntax in Objective-C, it's bad practice and quite irritating.
There is no such thing as a better graphics API. They are just different. And hot. And sexy. I should stop now.
Your matrices are belong to us.

User avatar
UDP11
Obama s Trešnjevke
Posts: 657
Joined: Thu Nov 06, 2008 2:38 pm
Smallest prime number bigger than 20: 23

Re: Step into the Z...

Post by UDP11 » Tue Jan 19, 2010 6:46 pm

RayDX wrote:Poznavanje solidno nekog (po mogućnosti objektno-orijentiranog) jezika poput C++a: najjednostavnije rečeno, da se osjećaš ugodno s pokazivačima, manipulacijom polja (pokazivači u srcu), operator overloadingom, linked listima, nasljeđivanjem, polimorfizmom (uglavnom ova zadnja dva definiraju važnije koncepte OO programiranja, toga si svjestan)... Ako ti je to jasno, znači da su i njihovi jednostavniji elementi ti jasni, nazovimo ih podskupovima.

Potrebno je poznavanje barem srednjo-školske matematike, tu si uključi aritmetiku, matrice, vektore, trigonometriju (! yup, važno), ako se osjećaš avanturistički čak i osnove kvaterniona (korisno kod implementacije kamere npr.)

Uglavnom, većinu ovog već znaš, a ostalo možeš saznati putem... Trebat će ti određeni API s kojim planiraš se upustiti u 3D programiranje, tu znaš što biraš i onda tražiš reference na netu, dokumentacije ili pak knjigu neku o toj temi i učiš i vježbaš i vježbaš i vježbaš... I to je to :D

A na osnovici svega toga, moraš se uhvatiti nativnog Win32 programiranja ako planiraš ili sa OGL-om ili DX-om ići... XNA te manje više poštedi toga, ali je manje rewarding iskustvo u konačnici.
Po čemu je točno XNA manje rewarding od Direct3D-a ili OpenGL-a??
XNA puno olakšava i skračuje vrijeme pisanja koda, kakve su to prednosti Direct3D-a i OpenGL-a nad XNA-om?
Image

User avatar
Overseer
Spaaaaaaace!
Spaaaaaaace!
Posts: 593
Joined: Tue Aug 26, 2008 2:02 pm

Re: Step into the Z...

Post by Overseer » Tue Jan 19, 2010 7:59 pm

Nikako nisam htio aludirati da se radi o nekoj diskriminaciji, ali XNA je u biti framework koji leži na DirectXu, te je najjednostavnije rečeno, "još jedan apstrakcijski sloj"... Što je veća apstrakcija od programera, to je manja mogućnost kontrole nad low-level procesima. Također, DirectX/OpenGL i C++ (nativni, nikakve CLR điđamiđe) čine distribuciju jednostavnijom, ne mora se puno patiti sa dodatnim runtime dodatcima koje XNA npr. zahtijeva jer nije "opće prihvaćen standard" na Windowsu kao čistokrvni DirectX.

A samim time, kada pojednostavljuje određene procese kod razvoja igara (iako XNA to jako lijepo balansira), osobno se osjećam zakinuto i kao da uzimam lakši put. To je moj razlog, koliko god subjektivan. I zato sam rekao "manje rewarding", jer ne osjećam jednak nivo zadovoljštine :D

No, u konačnici, odluka što ćete koristiti je u potpunosti vaša!
Don't combine bracket and dot syntax in Objective-C, it's bad practice and quite irritating.
There is no such thing as a better graphics API. They are just different. And hot. And sexy. I should stop now.
Your matrices are belong to us.

User avatar
EmP
Veliki brat malih trokuta
Posts: 498
Joined: Tue Sep 01, 2009 10:14 pm
Smallest prime number bigger than 20: 23
Location: Zagreb
Contact:

Re: Step into the Z...

Post by EmP » Tue Jan 19, 2010 10:11 pm

Ja ne bih preporučio DirectX i C++ kombinaciju za "ulazak" u 3D. C++ jest moćan al je ružan. DirectX, barem DX9, je u C++ nešto odvratno. Ak se malo prošvrlja, može se vidjeti da je MS od objektno napisanog DX-a pomoću typdefova i defineove napravio užasno gadan proceduralan API.

OpenGL u C++ je isto proceduralan, al je proceduralan u samome startu i puno je lijepši za pisat i razumjet nego DX. I još k tome je direktan, u smislu da mu možeš odmah dati da nacrta trokut a ne ko D3D da moraš prolazit birokratsku proceduru da bi na ekran poslo 3 verteksa i od njih napravio trokut. DX ide od pretpostavke da će odmah u startu radit nešto veliko i nudi funkcionalnost za rad nad većim i složenijim objektima. Ak hoćeš krenut u C++u, preporučam OpenGL u kombinaciji s ili GLUT-om ili SDL-om, kako bi minimizirao birokraciju oko stvaranja prozora.

Probao sam raditi s DX-om u C#, baš s DX-om, ne s XNA, i zadovoljan sam. Jest da se isto treba mrdat s vertex bufferom da se nacrta obična linija al je podnošljivije nego u C++-u. Što se portabilnosti tiće, ako odabereš DX ograničavaš se na Windowse a kad si već na Windowsima, moš odma u C#, nije puno sporiji a puno brže ćeš ostvarivati zamisli nego u C++u. Još je tu i opcija OpenGL u Javi.

Osobno, više volim imati kontorlu nad vlastitim kôdom nego nad low level detaljima. Jednostavno mi se pokazalo da brže napravim ono što sam naumio u C# ili Javi nego u C++.
Nexus 64213 blog - IKON: moja verzija JSONa
Stareater blog - lijepe slike kak napreduje kod

User avatar
Overseer
Spaaaaaaace!
Spaaaaaaace!
Posts: 593
Joined: Tue Aug 26, 2008 2:02 pm

Re: Step into the Z...

Post by Overseer » Tue Jan 19, 2010 10:42 pm

S EmP-om se definitivno slažem da će Java ili C# puno ranije dati rezultate te da sam kôd ljepše izražava siluetu objektno orijentiranog dizajna, no ako je itko imalo ozbiljan oko razvoja igara, u konačnici će morati prihvatiti grubost C++-a i uskočiti u "igru", bilo da koristi OGL ili DX. Stvar je samo u različitim krivuljama učenja i koliko zapravo želiš izvući, što je osobna preferencija.

Što se tiče C#-a, istina, danas je razlika u performansama minimalna... Osobno sam držao fige managed directx inicijativi ali ona je fejlala tužno, tako da sam se vratio težoj putanji sa C++-om i DirectXom (ali i OpenGL-om). No, na drugu stranu, čuo sam za jednu open source inicijativu zvanu SlimDX koja izgleda kao dobra zamjena za propali MDX (prerađen u XNA, iako je bolje reći da je uključen u njenu osnovicu). Ovdje možete saznati više o SDX-u.

Još uvijek smatram ukoliko je osoba zainteresirana za razvoj igara, a ima dobru pozadinu u C++-u, da bi definitivno trebala preuzeti sve mindfuckove koje dolaze sa DirectX-om, a ako cilja na x-platforming, onda je OpenGL izbor za njih. Osobno pokušavam se okoristiti s oba API-a, u zadnje vrijeme specifično sa OGL ES 1.1/2.0 na iPhoneu 3G/3GS-u.

Kad se pokušava oboje gurati, biti jack of all trades znači da nikad se neće u potpunosti ovladati nečim, tako da je bolje odabrati nešto i specijalizirati se. Ali pošto je meni programiranje igara hobi, a ne potreban pretjerano za posao u životu, imam taj luksuz. U konačnici, mnogi će se pronaći u situaciji da možda izgrade engine u C++-u koristeći DirectX/OpenGL, pa napišu editor C#-u jer je jednostavnije (osobno tako radim na svom Hybridu 3.0)

Again, the choice is yours!
Don't combine bracket and dot syntax in Objective-C, it's bad practice and quite irritating.
There is no such thing as a better graphics API. They are just different. And hot. And sexy. I should stop now.
Your matrices are belong to us.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest