[ Predrag Damnjanovic @ 24.02.2002. 12:08 ] @
Prvo, interesuje me da li se OpenGL primenjuje na SGI radnim stanicama? Da li im je to prirodni jezik za 3D modeliranje?
Drugo, sta je to Glide, ako se ne varam, to je 3DFX razvijao, pa je sve to propalo, zajedno sa samim 3dfx-om?
Trece, da li se OpenGL i dalje razvija, kao Direct3D, ili se sa razvojem stalo, recimo jer vise nema potrebe da se razvija?
I sta po vama ima svetlu buducnost, OpenGL ili Direct3D?
Da li OpenGL moze da konkurise Direct3D-u, i jos kol'ko ce izdrzati? (ili je stvar obrnuta?) :)
I zna li neko da li je tacna prica da se na XBox-u koristi Direct3D ?

E sad, nesto u vezi opensource-a.
Mozda vec znate, poceo sam da razvijam OpenGL engine (3d & gui).
Planirao sam da bude opensource, i vec sam registrovao http://myengine.sourceforge.net , samo ga jos nisam objavio, jer mu jos pisem osnovu.
Leka mi rece da SF hoce ponekad da nasilno promeni licencu projektu, ili da mazne ceo tvoj kod i ugradi ga u neki svoj projekat.
Nije SF problem, precicu na http://savannah.gnu.org/ i gotovo, nego se razmisljam da li uopste da ga stavim kao opensource, ako znam da ce neko sigurno da mazne moj kod i mlati pare posle.
Sta dobijam od OpenSource-a, licno ne verujem da ce mi neko pomoci da ga razvijam :(, samo mogu da koriste moj kod, nista vise.
Sa druge strane, na netu ima gomila opensource engine-a, ID Soft je cak objavio ceo Quake2 sors, zajedno sa engine-om (koji je doduse sada vise nista ne vredi, star...).
Ova konstatacija nista ne znaci, sve zavisi kako ga tumacis, mozes da ga tumacis tako sto ces reci da vec ima dovoljno open-sorce projekta pa ovaj moj nista ne menja, nikoga nece posebno usreciti, pa nema potrebe da bude opensource.
Plus sto ja hocu da napravim neku igru (bez smeha, molim :)), pa specijalni efekti nece biti originalni ako ih neko iskoristi i za svoju igru.
Umalo da zaboravim, ovaj engine ne razvijam samo za igre, vec i za ozbiljne stvari (planiram da napravim neki real-time 3d modeling tool-kit, i neki real-time archi-cad).
Plus sto ga pisem u C-u, pa je timski rad (po Lekinim recima) veoma komplikovan, plus sto closed-source moze bilo kada da postane open-source, pa mogu da se predomislim uvek, a u suprotnom slucaju ne mogu.
Sta vi mislite, objektivno, sta je bolje - open ili closed source za ovakav projekat?
[ Ivan Dimkovic @ 24.02.2002. 12:13 ] @
OpenGL je de-facto 3D standard i koristi se na SGI-ju

Direct3D se verovatno koristi na XBoxu kako se radi o MS proizvodu, mislim da Reljam moze da kaze mnogo opsirnije (ako nema totalni NDA ugovor)

Mogao bi da napravis engine koji bi "virtualizovao" low-level engine tako da to moze da bude i D3D i OGL, tako bi dobio na "zaledju".

Sto se opensource licenci tice, tu treba da budes cist sa sobom - ja znam za par kompanija koje lepo ignorisu "GPL" licencu, i tu tesko da mozes nesto da uradis. Stvar je sasvim druge prirode - ideja OpenSource inicijative je zajednicki razvoj i pomoc izmedju OSS projekata. Uvek ce biti ljudi koji mogu to da ukradu ili zloupotrebe.

Takodje, razmisli o licenci, imas GPL, LGPL, MPL (Mozilla PL), BSD, itd.. svaka od tih licenci ima neke svoje prednosti i mane, kao i ciljnu grupu projekata.


Ne vidim zasto je timski rad u C-u tezi od timskog rada u bilo cemu drugom - bilo bi lepo da Leka to objasni.

Pitanje je koliko je razvoj custom 3D engine-ova uopste isplativa rabota, jer za dobar engine ti treba veoma veliko znanje nekolicine softverskih inzenjera - a takvih resenja vec ima dosta.
[ Dragi Tata @ 24.02.2002. 18:19 ] @
Prvo treba da raščistiš sa sobom zašto praviš taj 3D Engine. Ako ga praviš za slavu, onda obavezno objavi source, ali ti je moj savet da ne lupaš glavu GPL-om i sličnim besposlicama, nego samo da na početku svakog fajla staviš obaveštenje da svako može besplatno da koristi tvoj kod, ali da ti nisi odgovoran za eventualne štete koje mogu da nastanu korišćenjem istog. Ako misliš da zaradiš pare, onda zaboravi open source i krij kod kao zmija noge.

[ Predrag Damnjanovic @ 24.02.2002. 18:50 ] @
Da, dobro pitanje - sta zelim da postignem. Videcu...
Mada retko ko se proslavio zbog opensource-a :)

Nego, da li se OpenGL i dalje razvija, kao Direct3D, ili se sa razvojem stalo, recimo jer vise nema potrebe da se razvija?
I sta po tebi ima svetlu buducnost, OpenGL ili Direct3D?
Da li OpenGL moze da konkurise Direct3D-u, i jos kol'ko ce izdrzati? (ili je stvar obrnuta?) :)
[ Ivan Dimkovic @ 24.02.2002. 19:45 ] @
Ne zaboravi da je OpenGL u stvari automat sa stanjima (state machine) implementiran sa C-olikim jezicima u vidu, potpuno multi-platform i OS independent, dok je Direct3D objektni (COM) API orijentisan prevashodno na C++ programiranje, i naravno Win32/MS proprietary.

Pitanje koji od njih ima svetlu buducnost je ekvivalentno pitanju da li Win32 proprietary ima svetliju buducnost od OpenSource platform-independent modela. To ti niko ne moze odgovoriti objektivno, moj ti je savet da ako zelis zaraditi novac na tome gledas sta ti je isplativije i jeftinije da uradis, a ne da se drzis filosofije sta je bolje za razvoj civilizacije ;-) A, ako zelis da se proslavis, kao sto Dragi Tata rece, onda zasigurno treba bezati od proprietery resenja ;-)


OpenGL razvija konzorcijum kompanija, D3D samo Microsoft.

Isti problem se javlja na jos 1000 polja, recimo, da li MPEG-4 kao open/ISO resenje ili Windows Media Technologies kao MS-Proprietary, da li Linux/BSD kao open resenje ili Win32 kao proprietary... uvek je isti odgovor - zavisi od slucaja do slucaja!
[ Predrag Damnjanovic @ 24.02.2002. 20:25 ] @
Ma ko shisha D3D, nisam ni nameravao da ga koristim.
Znaci OpenGL se razvija - to mi je bitno.
Sad je pitanje kojom brzinom...
[ Ivan Dimkovic @ 25.02.2002. 09:41 ] @
Mislim da OGL ima sve sto tebi treba za posao. Prednost Direct3D-a je u gamingu posto Microsoft agresivno gura ovaj standard, i sve mainstream graficke kartice moraju da ga podrzavaju. Moj predlog je da ceo sistem pises u C++ jeziku i da sve apstrakujes, pa i same pozive ka 3D engine-u niskog nivoa - a onda da napises "drajver" za OpenGL i Direct3D i time si ubio sve muve u jednom potezu

Znaci, razmisli dobro - ako hoces da pravis game engine koji ce se prodavati - nikako nemoj da dajes source kod u OpenSource - source se uvek licencira (ne prodaje) sa cenama od 6-7 nula, bilo bi glupo da bacis te pare u vodu ako vec imas nameru da se obogatis. Pitanje je koliko ce tebi i tvojoj ekipi trebati vremena da napisete nesto sto ima komercijalni kvalitet, tu moras da budes realan i da procenis svoje mogucnosti i mogucnosti tvojih kolega...

Jos nesto u vezi Open vs. Closed Source modela - velike kompanije VOLE Closed Source zato sto njihovi old-school manageri jednostavno zahtevaju komercijalne garancije i 24/7 mogucnost da se deru na nekog ako nesto ne radi. Znaci, ako ti licenciras tvoj source kod za, recimo, $200,000 - u tih $200,000 je vecina love tvoja garancija da sve to radi, a ako ne radi, tvoja mogucnost da te bagove odmah ispravis - tako nesto ne postoji u "nicijim" projektima gde niko nema pravnu obavezu da nesto odrzava. Ja imam iskustva u licencnim ugovorima i mogu da ti kazem da kompanije prvo sto zahtevaju je da osiguraju njihovu investiciju - meni je poslednji put otislo bar 50% vremena u pregovorima oko toga kako se resava sistem odgovora na "issues" i oko garancija! Partner je trazio da se cak osigura biznis tako sto ce ceo source kod biti na raspolaganju ukoliko biznis propadne, preko E-Escrow kompanije, sto je velika komplikacija, na primer.

Onda treba da osmislis i biznis model mada je ovo za sada za tebe poslednji prioritet - u svakom slucaju moras napraviti efikasan biznis model koji ce tebi donositi lepe pare - obrati paznju ako koristis naucne radove u pravljenju nekih 3D efekata - nikako ne smes dozvoliti da koristis nesto sto je patentirano a da ne resis probleme intelektualne svojine, jer za ovo mogu da lete glave (ne bukvalno, ali finansijski - da) - Za ovo ti preporucujem da se konsultujes sa nekim ko ima iskustva u tom poslu.
[ Predrag Damnjanovic @ 25.02.2002. 10:33 ] @
Citat:
Ivan Dimkovic:
Moj predlog je da ceo sistem pises u C++ jeziku i da sve apstrakujes, pa i same pozive ka 3D engine-u niskog nivoa - a onda da napises "drajver" za OpenGL i Direct3D i time si ubio sve muve u jednom potezu :)


Hmmm, a da nece to da uspori proces izvrsavanja? To ima samo da skace po memorijskim lokacijama...
Zar nije bolje napraviti dve inline funkcije, jednu za d3d a drugu za opengl, i samo pozivati jednu posle, recimo za opengl, a kad hoces da predjes na d3d onda samo replace-ujes ime funkcije u kodu, tamo gde je pozivas ?
Jel' D3D mora da se koristi iskljucivo u OOP okruzenju, ili moze da se koristi i u C-u?
[ Ivan Dimkovic @ 25.02.2002. 10:54 ] @
Citat:
zastita:

Hmmm, a da nece to da uspori proces izvrsavanja? To ima samo da skace po memorijskim lokacijama...



Ne mora, ako ti na pocetku "mapiras" funkcije tako da je overhead jako mali, mnogi engini rade po principu drajvera - overhead koji se desi je jako mali.

Citat:

Zar nije bolje napraviti dve inline funkcije, jednu za d3d a drugu za opengl, i samo pozivati jednu posle, recimo za opengl, a kad hoces da predjes na d3d onda samo replace-ujes ime funkcije u kodu, tamo gde je pozivas ?
Jel' D3D mora da se koristi iskljucivo u OOP okruzenju, ili moze da se koristi i u C-u?


1. Moze i tako

2. Morao bi da napises neke wrappere za tako nesto, ali ja se D3D-om ne bavim aktivno tako da bi mozda bilo bolje da neko iskusniji u ovom polju da odgovor na ovo pitanje...
[ Dragi Tata @ 25.02.2002. 16:15 ] @
Citat:
zastita:
Citat:
Ivan Dimkovic:
Moj predlog je da ceo sistem pises u C++ jeziku i da sve apstrakujes, pa i same pozive ka 3D engine-u niskog nivoa - a onda da napises "drajver" za OpenGL i Direct3D i time si ubio sve muve u jednom potezu :)


Hmmm, a da nece to da uspori proces izvrsavanja? To ima samo da skace po memorijskim lokacijama...


Ako ne koristiš run-time polimorfizam (virtuelne funkcije) u C++u, ne vidim zašto bi se izvršavalo sporije. Uostalom, čak i ako ne voliš OO model (što razumem u potpunosti, ima dosta ljudi koji ga ne vole), mislim da je opet bolje da koristiš C++. Možeš da praviš generičke funkcije, da koristiš STL algoritme i kontejnere i druge prednosti koje C++ ima bez ikakve cene u performansama. Naravno, ovo je samo moje mišljenje.
[ Predrag Damnjanovic @ 25.02.2002. 22:11 ] @
Ajd' jos jedanput da pitam, posto ne dobih odgovor prvi put:
Jel' D3D mora da se koristi iskljucivo u OOP okruzenju, ili moze da se koristi i u C-u?
[ Dragi Tata @ 25.02.2002. 23:15 ] @
Citat:
zastita:
Ajd' jos jedanput da pitam, posto ne dobih odgovor prvi put:
Jel' D3D mora da se koristi iskljucivo u OOP okruzenju, ili moze da se koristi i u C-u?


Ovaj odgovor primi sa rezervom, jer nikad nisam ni "pipnuo" D3D.

Koliko znam, D3D je implementiran kao COM komponenta(e). COM možeš da pozivaš i iz C-a, mada ćeš malo da se pomučiš.
[ tosa @ 26.02.2002. 08:11 ] @
Citat:
zastita:
Ajd' jos jedanput da pitam, posto ne dobih odgovor prvi put:
Jel' D3D mora da se koristi iskljucivo u OOP okruzenju, ili moze da se koristi i u C-u?


D3D mozes da koristis i u C-u (kao i sve ostale COM objekte), a razlika je sitna:
umesto da pozivas metode sa recimo

lpD3D->QueryInterface();

koristices

lpD3D->lpVtbl->QueryInterface(lpD3D);

MADA bih ja u svakom slucaju preporucio OpenGL, posebno ako tek pocinjes sa 3D
grafikom (i pisanjem engine-a), zato sto je neuporedivo manje vremena potrebno
za implementaciju "driver"-a za neki engine... btw. nisam primetio da John Carmack pati zato sto UOPSTE ne podrzava D3D :)

Sa druge strane, to nije jedini savet - probaj C++
Moj "engine" je sav u plugin-ovima, a dobar deo cine COM biblioteke -
a to je posledica blizu 10 godina programiranja grafike (pokazalo se kao najbolje resenje, mozda ne najbrze ali zato ce "engine" moci da uradi (skoro) bilo sta).
Cena pozivanja funkcije nije velika, dok (recimo) inline f-je mogu biti opasnije
od normalnih, i to zato sto se "unroll"-uju direktno u kod sto cini kod vecim.
U nekim situacijama je ovo korisno, ali u nekim moze MNOGO da uspori program zato sto se preopterecuje cache procesora ...
Ono sto nikako danas ne bi trebao ni da pokusavas su samomodifikujuci programi
i ako je to nekada bio jedini nacin da dobijes pristojnu brzinu u 3D..
Danas, na zalost, moras da pravis kompromise izmedju zelje za starim
dobrim C(asm) programiranjem i realnim stanjem trzista ...

tosa

ps. ako hoces da ti pomognem javi se na
064 / 11 4567 2
[ Predrag Damnjanovic @ 26.02.2002. 09:17 ] @
Evo imam samo jedno pitanje: sta da skinem da bi se dokopao header file od DX 8.1?
Imam DLL-ove, samo mi treba d3d.h.
Da ne trebam mozda da skinem DirectX 8.1 Symbol Files ?
Nemoj mi samo reci da mi treba onaj fajl od 128 MB, dicicu odmah ruke od D3D-a :)
[ tosa @ 26.02.2002. 23:31 ] @
Citat:
zastita:
Evo imam samo jedno pitanje: sta da skinem da bi se dokopao header file od DX 8.1?
Imam DLL-ove, samo mi treba d3d.h.
Da ne trebam mozda da skinem DirectX 8.1 Symbol Files ?
Nemoj mi samo reci da mi treba onaj fajl od 128 MB, dicicu odmah ruke od D3D-a :)


ostavi mail, pa mogu da ti bacim ...
za symbol files ne znam :)
ili ako hoces da ti snimim na CD ceo SDK ... (bolja varijanta) ...

tosa
[ Reljam @ 01.03.2002. 21:27 ] @
Odgovor zavisi od toga za sta ti treba 3D biblioteka - za igre ili za nesto drugo? Obicno ovo nesto drugo znaci da ti ne trebaju stvarno napredne funkcije tipa pixel & vertex shadera, vec nesto na nivou D3D 7 ili mozda cak i D3D 6.

Meni se OpenGL ne dopada kao resenje za igre, jer su sve naprednije funkcije nestandardne, tj. dobijaju se pomocu OpenGL prosirenja koja zavise od drajvera. Znaci jedna stvar radi na Nvidia karitcama, ali ne radi na ATIjevima. Naravno ATI ima svoje ekstenzije za to isto koje se malo razlikuju, i tako u nedogled. Ali ako ti ne treba nista vise od osnovnih stvari, onda OpenGL u saradnji sa recimo GLUTom moze da bude dobro resenje. Medjutim, i ovo je veliko medjutim, D3D 8.1 sa D3DX bibliotekom (dobija se uz D3D) ti garantuje skoro isti komfor u radu, ali jos povrh toga dobijas i mogucnost da se kasnije prosiris na neke od naprednijih funkcija koje nisu standardne u OpenGL-u.

XBox ne koristi D3D, ali ono sto koristi je vrlo blisko D3D-u. Vecinu stvari mozes da portujes bez vecih izmena. XDK (SDK za XBox) sadrzi 3D podsistem koji je specijalizovana varijanta D3Da. Vise od toga ne mogu da kazem, ali za prakticne svrhe vazi da je portovanje D3D -> XBox relativno bezbolno.

Mana D3D-a je sto nije podrzan van Windowsa / XBoxa. Ukoliko ti to predstavlja problem (sa finansijske, ne filozofske strane), onda D3D nije za tebe.

Biblioteke koje mogu da rade sa oba standardna su obicno neoptimalne, jer D3D i OpenGL imaju dva razlicita pristupa problematici - D3D daje potpunu kontrolu, dok OpenGL apstrakuje stvari. Takodje dualne biblioteke su obicne ekstremno neoptimalne po pitanju programerskog vremena i po pitanju testiranja.

Za kraj, Glide je nestao jos pre nego sto je sam 3DFX nestao. Glide je kombinovao mane Direct3D-a sa manama OpenGL-a. :) Zao mi je zbog toga, 3D programiranje sam poceo da radim u Glide-u ;)

Sto se tice OpenSource-a, to je vise pitanje izbora. Meni se cini da su najvatreni zagovornici OSa oni koji ne zive od programiranja - u stvari tesko mi je da zamislim nekog ko zeli da svoj rad daje za dz. Tu sam odluci. Moja preporuka, ako hoces Windows, onda koristi D3D i closed source, ako hoces ne-Windows koristi OpenGL i closed source ako mislis da bilo sta zaradis. Slavu stices i sa open i sa closed sourceom, naravno.
[ Jovan Marjanovic @ 04.03.2002. 09:11 ] @
Mene zivo interesuje kako zamisljas da napises 3D engine kad po prvom postu ocigledno pojma nemas sta je OpenGL, i koja je razlika izmedju standarda kao sto je OpenGL i microsoftove bljuvotine po imenu Direct3D ...
[ Predrag Damnjanovic @ 04.03.2002. 14:15 ] @
Pa ne znam mu istoriju, ali veoma dobro znam da ga koristim, poslacu ti na email ako hoces da vidis sta sam napravio.
Reljam, tnx, odlucio sam se ipak za opengl, i opensource ali bez specijalnih efekata, koje cu zadrzati za sebe.
Dakle, myengine.sourceforge.net ipak nece propasti
[ Jovan Marjanovic @ 04.03.2002. 14:56 ] @
U tom slucaju se izvinjavam za prethodni napad (profesionalna deformacija)
[ yooyo @ 08.08.2002. 23:28 ] @
Citat:
Predrag Damnjanovic:
Nego, da li se OpenGL i dalje razvija, kao Direct3D, ili se sa razvojem stalo, recimo jer vise nema potrebe da se razvija?


Naravno da se razvija. Formiran je ARB (Architecture Review Board) na celu sa 3DLabs, nVidia, ATI, i jos nekoliko jakih imena koji uveliko rade na OpenGL 2.0 standardu (www.3dlabs.com).

OpenGL 2.0 ce biti potpuno kompatibilan na nivou source code sa OpenGL 1.4/1.3/1.2/1.1/1.0 i podrzavace kroz nove funkcije sve extenzije koje su se do
sada pojavile. Imace podrsku za vertex shadere, pixel shadere, i fragment shadere, programabilan memory managment, direktan pristup texturama,
off-screen rendering, ...

Sve ove mogucnosti bi trebalo da budu hw impementirani, i za sada ce ih podrzavati novi 3DLabsom chip (mislim da se zove VP10)

Citat:
Predrag Damnjanovic:
I sta po tebi ima svetlu buducnost, OpenGL ili Direct3D?
Da li OpenGL moze da konkurise Direct3D-u, i jos kol'ko ce izdrzati? (ili je stvar obrnuta?) :)


U ovom trenutku se nebih izasnjavao ko je u prednosti. DirectX je od verzije 8 postao koristan i lak za kodirenje, dok je OpenGL to bio od samog pocetka.
Sta ces da koristis zavisi od tebe... npr.. svoj engine napisan u OpenGL-u ces vrlo brzo obogatiti novim efektom kroz extension mehanizam. DirectX u nekoj od verzija zaokruzi sve hw efekte u zajednicki interface i svaki novi efekat koji nije
u toj verziji interface-a nije moguce koristiti. Dakle.. kada pises za npr DX7 onda zaboravi na sve DX8 feature.

OpenGL ce uvek biti direktan konkurent DirectX-u jer je u nekim stvarima za korak ispred DX-a, dok u nekim drugi segmentima kasni.

Moj savet je da proucis i OpenGL i DirectX pa ces onda sam da odlucis sta ti vise odgovara.
[ Reljam @ 09.08.2002. 00:25 ] @
Citat:
Dakle.. kada pises za npr DX7 onda zaboravi na sve DX8 feature.

Zar to nije i inace tako? Kada pises za verziju X necega, ne mozes da koristis feature verzije X+1 (inace bi se to zvalo pisanje za verziju X+1)?

[ MoHicAn @ 09.08.2002. 01:49 ] @
Reljam nije mislio na to i ti to dobro znas.
[ Reljam @ 09.08.2002. 01:57 ] @
Iskreno, stvarno mi nije jasno na sta je covek mislio, zato me i interesuje. Koji su to feature-i OpenGL recimo 1.2 koji su dostupni iz OpenGL-a 1.1? A ako su dostupni iz 1.1, zar ih to onda ne cini i featurima OpenGL-a 1.1?

Bez ikakvog zezanja, treba mi pojasnjenje.
[ MoHicAn @ 09.08.2002. 02:35 ] @
Zato sam i rekao da nije mislio u tom smislu. A i lepo je napisao gore sta je hteo da kaze time. U novim verzijama se stari featuri spajaju u jedan i ako tvoj nije jedan od njih nece moci da se ukomponuje u novu verziju. Makar sam ja tako razumeo nisam expert za ni za D3D ni za OpenGL