Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
OpenGL a Direct3D II

Martin Čížek
Martin Čížek (neregistrovaný)
11. 8. 2004 2:51 Nový

Porovnávání délky kódu

celé vlákno

Článek vypadá dobře (zítra jej přečtu důkladněji), ale neodpustím si jednu poznámku:
Stálo by za to srovnat trend nárustu kódu v závislosti na přidávání funkcionality. Často platí, že dobrý způsob programování (vyznačující se tím, že pro přidání další/související funkčnosti vyžaduje málo změn) má svůj "Hello World" nepěkně dlouhý/složitý.

jezeq
jezeq (neregistrovaný)
11. 8. 2004 5:48 Nový

o co tu jde?

celé vlákno

musim konstatovat,ze jsem zatim neprisel na to,jakou informaci mi ma tento serial zprostredkovat.

Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
11. 8. 2004 8:56 Nový

OpenGL a kontrola chyb

celé vlákno

Dobry den,
neodpustim si jednu poznamku: v OpenGL je kontrola programatorovych chyb dost mizerna, a to mi (i kdyz mam OpenGL moc rad a asi je to i videt z mych clanku) vadi, zejmena pri vyuce pocitacove grafiky, nebo pri praci s OpenGL u zacatecniku.

Zkuste napriklad napsat prikaz glVertex() mimo prikazove "zavorky" glBegin(), glEnd(). Na nekterych platformach a gfx. akceleratorech klidne zacnete hledat tlacitko reset :-(, na nekterych se zase od tohoto prikazu nebude nic renderovat. Proste je to chyba, ktere prekladac ani OpenGL nemuze zamezit, hlavne, kdyz netestujete chybove stavy.

Vas kod v DirectX byl korektni, protoze testoval veskere chybove stavy. Pokud tam ty testy nedate, ziskate +- podobnou (srovnatelnou) delku kodu.

deda.jabko
deda.jabko (neregistrovaný)
11. 8. 2004 10:21 Nový

Re: OpenGL a kontrola chyb

celé vlákno

a je potreba? ano dojiste miry mate pravdu, ale pripada ze v opengl ani aktivne neni potreba - a kdyz je clovek prase a vola si vertex mimo begin asi bude nekde jinde chyba (treba v navrhu), ale to je spis o stylu programovani...

Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
11. 8. 2004 13:07 Nový

Re: OpenGL a kontrola chyb

celé vlákno

Tak to ale neni ani zapotrebi delat v DirectX. Podivejte, ja se Directu v zadnem pripade nezastavam, ale porovnavat program v DirectX, ktery testuje vsechny mozne chybove stavy s programem v OpenGL, ktery proste doufa, ze vsechno probehlo v poradku, neni moc ferove.

Taky ten program v OpenGL neni analogii toho v DirectX, to by se musely pouzit vertex arrays, coz neni ani u OpenGL moc citelne (spis naopak).

A kdyz uz jsme u tech chyb, kdyz se da prikaz glVertex() mimo prikazove zavorky, je to jiste chyba programatora, ale take chyba knihovny, ze se z toho nejakym jasne definovanym zpusobem nevzpamatuje (nebo nezhavaruje, to je jedno, hlavne at je to jednotne).

Petr
Petr (neregistrovaný)
11. 8. 2004 10:02 Nový

Objektovy DX?

celé vlákno

Prosimvas, vysvetlete mi nekdo, proc porad o DX tvrdite, ze je objektovy? Pouzivani maker, pretypovani ukazatelu, funkci jako memcpy a podobnych assemblerovskych praktik rozhodne OOP neni.

Navic jsme kdysi zkoumali COM a zjistili, ze makra hluboko uvnitr COM pouzivaji pretypovani ukazatele na tridu na (char *), prictou nekolik bytu a pretypuji zpet. Takze COM je zavisly na binarni podobe prelozene tridy! Tohle jsem nedelal, ani, kdyz jsem v tom assembleru psal.

Taky se v COM neobejdete bez berlicky friend... Ruka by mi upadla a jeste bych si s ni musel nafackovat, kdybych rekl, ze COM, potazmo DX je objektovy. @#$%^& (autocensored)

hkmaly
hkmaly (neregistrovaný)
11. 8. 2004 15:38 Nový

Re: Objektovy DX?

celé vlákno

Presnejsi by bylo rici, ze diky zdanlive objektovemu chovani ma DX vsechny nevyhody objektoveho programovani, aniz by zjiskalo nejake z vyhod ...

(mozna trochu prehanim).

Pavel
Pavel (neregistrovaný)
11. 8. 2004 22:11 Nový

Re: Objektovy DX?

celé vlákno

Podobne se tvrdi o GTK, ze je psano objektove :-). O tom, jestli je to pravda nebo ne, se necha diskutovat, ale proc?

petr
petr (neregistrovaný)
11. 8. 2004 12:04 Nový

dx vs opengl

celé vlákno

No proc - musi prece dokazat, ze OpenGL je lepsi nez Microsoft Direct X, ne ? Tak si najde jeden priklad, kdy ma OpenGL kratsi kod (coz je teda vyhoda jak poleno). Fakt, ze pred 10 lety vsichni vyvojari prestali pouzivat Open GL prave ve prospech DirectX jaksi zjevne nikoho nezajima. Kvuli necemu to prece vzniknout muselo. A grfickejch akceleratoru pro hry je cca 99% (tzn DirectX podpora). OpenGL si se svou podporou profi grafiky drzi sve stale misto - ale jak rikam - volba byla provedena v roce 1995 s prichodem Windows 95, kdy se 90% trhu priklonilo k Direct X. Ono takovehle domaci bastleni na jednoduchejch prikladech a programovani realny aplikace je uplne odlisna vec. Kazdy profi programator povi sam, proc jede na DX a ne na OpenGL

tomm
tomm (neregistrovaný)
11. 8. 2004 12:17 Nový

Re: dx vs opengl

celé vlákno

Zcela bez jakekoliv ironie. Mohl by nekdo takovy tyto duvody - proc DX ci OGL - zde vyjadrit? Velmi by me to zajimalo. Nebo pro ktere typy aplikaci je ktery system vhodnejsi. Diky.

Ladislav Thon
Ladislav Thon (neregistrovaný)
11. 8. 2004 12:19 Nový

Re: dx vs opengl

celé vlákno

Jojo. A ten Carmack je amatér, který nikdy nenapsal žádnou úspěšnou hru (čti: reálnou aplikaci).

mikeson
mikeson (neregistrovaný)
11. 8. 2004 13:12 Nový

Re: dx vs opengl

celé vlákno

Vazne ne? A co treba Wolfenstein 3D, Doom 1 a 2, Quake 1, 2, 3, RTCW a treba Doom 3? A co napr. fakt, ze licenci na engine Quake 3 bylo prodano pres 35? Porad malo? A co takhle, ze predni vyrobci karet (NVIDIA & ATI) si davaj sakra zalezet, aby jejich HW co nejlip behal na enginech od Carmacka (a kvuli D3 se ted muzou pretrhnout).

P.S. Moc jsem nepochopil prirovnani "poradne hry" a "realne aplikaci"... :o

Ladislav Thon
Ladislav Thon (neregistrovaný)
11. 8. 2004 13:26 Nový

Re: dx vs opengl

celé vlákno

Já pochopitelně vím, co John Carmack stvořil, a ať si o něm myslím cokoliv, kvality jeho 3D enginů -- používajících, světe div se!, OpenGL -- popírat nemůžu. Že jste nepoznal ironii, na tom nemám nejmenší vinu :)

jarda
jarda (neregistrovaný)
11. 8. 2004 16:42 Nový

Re: dx vs opengl

celé vlákno

no ale uz nemluvi zdaleka tak jednoznacne o open gl jak mluvival, kdyz zacal delat na doomu 3 . dokonce sam uznava , ze s directx je treba do budoucna pocitat . ja ale porad nechapu jak nekdo muze srovnavat opengl vs directx s tim , ze z toho vychazi jednoznacny vitez. tak to prece neni a celkem me mrzi , ze tady na rootu to tak vyzniva . ostatne i ten doom 3 sice nepouziva d3d, ale vsechno ostatni kolem jo. directsound , multiplayer atd...

Diagon Swarm
Diagon Swarm (neregistrovaný)
12. 8. 2004 20:13 Nový

Re: dx vs opengl

celé vlákno

"Fakt, ze pred 10 lety vsichni vyvojari prestali pouzivat Open GL prave ve prospech DirectX jaksi zjevne nikoho nezajima. Kvuli necemu to prece vzniknout muselo. A grfickejch akceleratoru pro hry je cca 99% (tzn DirectX podpora). OpenGL si se svou podporou profi grafiky drzi sve stale misto - ale jak rikam - volba byla provedena v roce 1995 s prichodem Windows 95, kdy se 90% trhu priklonilo k Direct X."

Nechci se teda tady do té diskuze moc zapojovat, ale tady si neodpustim reagovat. Myslím, že tady míchate hned několik věcí přes sebe. Pochybuju, že lidé v roce po příchodu DX nějak masově přestali používat OpenGL. Direct3D byl navržen tak, aby měl co nejmenší nároky na hardware (rozuměj grafické karty). Tj. hardware pro Direct3D se tak dal vyrobit mnohem levněji než hardware, na kterém by běželo OpenGL (taky tomu odpovídali funkce D3D a vůbec všechno okolo). Kdyby to MS neudělal, tak se 3D akcelerátory do osobních počítačů rozhodně nedostali tak rychle (s trochou nadsázky: třeba bychom stále tvrdli na grafických kartách, co uměj jenom 2D a 3D by bylo pouze doménou grafických stanic - samozřejmě je to blbost, bylo tu například ještě 3Dfx ;). Než mě někdo začne osočovat, tak bych jenom řekl, že my děláme v OGL, takže rozhodně tady nemám zapotřebí vynášet DX potažmo MS do nebes :).

<head>
<head> (neregistrovaný)
11. 8. 2004 13:50 Nový

moc mi neni jasny smysl clanku....

celé vlákno

nejak se mi zda ze autor vzal toto srovnani za spatny konec...
srovnavat dve api (navic svou koncepci dost odlisna) podle delky kodu mi neprijde moc vhodne. navic jak uvedl vyse pavel tisnovsky nejsou useky ekvivalentni. delsi kod nic neznamena stejne je vzdycky nejtezsi to vymyslet a ne zapsat, i kdyz uznavam ze kratsi a prehlednejsi kod je vyborny v zacatcich (a ogl je skutecne lehsi na nauceni).

nejak mi ale v techto clancich chybi obecnejsi srovnani, neco jako toto:

Direc3D:
- pouze win32
- _vetsinou_ hry (ano vim ze se uz zacina prosazovat i jinde)
- com model (c wrapper dostupny)

OpenGL:
- multiplatformni
- vsechny graficke aplikace (cad, vizualizace, hry, ......)
- proceduralni (objektovy obal dostupny - napr. openinventor apod)

z vyse uvedeneho je videt, ze porovnavat obe api ma smysl pouze u her na platforme win32, vsude jinde je opengl vicemene jasna (a jedina :) volba, takze bat se ze by nejak upadalo je blbost. no a v tech hrach jak sem uz psal do diskuze o hre ut2k4 je to uplne jedno. s pomoci obou dosahnete stejneho vysledku, zalezi jen na preferenci programatora (prip. zadavatele projektu), kazdopadne uznavam ze vetsina her pouziva d3d a to zejmena z toho duvodu, ze je soucasti vetsiho baliku directx, ktery poskytuje vse co je pro vyrobu hry dulezite pekne pohromade. opengl je pouze na grafiku (zejmena 3d), je skoda ze neexistuje nejaka "open" alternativa k celym directum, dat dohromady nekolik knikoven (opengl, openal, ...) tak si myslim, ze by to byla rozumna alternativa.....

ale jak rikam, pro uzivatele to jestli hra pouziva opengl nebo d3d nic neznamena, obe api umi vyzdimat grafiku nadoraz :) jediny co na directech nechapu je duvod jejich vzniku, proc vymyslet nove api kdyz uz jedno (navic pekne zavedene a funkcni) existovalo.... njn, microsoft :))

KKING
KKING (neregistrovaný)
11. 8. 2004 14:03 Nový

Re: moc mi neni jasny smysl clanku....

celé vlákno

V podstate jsi si na tu otazku odpovedel
Microsoft potreboval neco, kde budou moci programatori delat hry....
Stavajici api bylo pomale tak microsoft zavedl direct-x ne jen d3d, to se vyvinulo az podle pozadavku vyvojaru a proc by mneli pouzivat neco co nemohou ovlivnovat, kdyz maji lidi a prostredky aby vytvorili vlastni standard.
By mne zajimalo kolik lidi by udelalo hru jen v open-GL... Sice by se to zobrazilo ale bez zvuku ovladani a site to jaksi neni ono.

Mormegil
Mormegil (neregistrovaný)
11. 8. 2004 14:45 Nový

STOP!

celé vlákno

Prosim vas, zastavte nekdo tyhle nesmysly!
Jak uz tu bylo uvedeno, porovnavat dva naprosto odlisne kusy kodu (kontroly chyb, uplne jiny mechanismus vykreslovani) je naprosto nesmyslne. Navic nevim, komu to ma co rict. Nedovedu si predstavit, jak by jakykoli podobny clanek mohl nejakeho ctenare Roota presvedcit k prechodu z DirectX na OpenGL (naopak jeste hure, vzhledem k pristupu autora). Ctenari Roota moc DirectX pouzivat nebudou a pokud ano (jako ja), tak pro to maji svoje duvody a pochybne informace z tohoto serialu je asi tezko presvedci, ze...
Pokud by nekdo (kdo se v tom vyzna) napsal, v cem se lisi filosofie obou systemu, jejich schopnosti ohledne novejsich technologii, popr. uvedl par poznamek o prave prichazejicim OGL2, proc ne (i kdyz mi stale unika, proc na Rootu). Ale tohle je o nicem.
A jeste poznamka o objektovem pristupu: <ironie>Vskutku, fakt, ze nekde v implementaci neceho nekdo provadi nejake low-level funkce a pouzival pri tom pretypovani, to je opravdu dukaz, ze to neni OOP.</ironie> Takze jinak: OOP je o pristupu, a OGL takovy pristup urcite nema. (Existuje jakesi nebeske OGL, kteremu reknu "tady ty binarni data, tak to je textura, kterou ted pouzivej". (Popr. v pozdejsi verzi: pod cislem 4 rozumim tato binarni data, ktera jsou textura.)) Poznamenavam, ze to samo o sobe neni nic tragickeho, OOP neni zadny samospasitelny nastroj, jenom proste tezko poprete, ze DX vykazuje vyrazne vic OOP rysu nez OGL.

lubos
lubos (neregistrovaný)
24. 8. 2004 17:11 Nový

Re: STOP!

celé vlákno

Presvedcit na prechod. Tak ja ti povim, co je to podstatne.
Napises si grafickou aplikaci pod opengl, skompilujes ji kdekoliv. Win32, Linux, Aix, SGI, Solaris, cokoliv co ma podporu opengl a nemas problem.
Napises si aplikaci v directx a ? No asi to, presne.

Mormegil
Mormegil (neregistrovaný)
2. 9. 2004 10:44 Nový

Re: STOP!

celé vlákno

Tak jenom pro uplnost: umis cist?
"Ctenari Roota moc DirectX pouzivat nebudou a pokud ano (jako ja), tak pro to maji svoje duvody a pochybne informace z tohoto serialu je asi tezko presvedci, ze..."
Jinymi slovy: nijak nedebatuji o vyhodach a nevyhodach obou systemu (a nezavislost na platforme JE jednou z vyhod OGL), pouze konstatuji, ze pokud nejaky ctenar Roota pouziva DX, pak k tomu ma jiste sve duvody a nedokazu si predstavit, ze by ho podobny clanek presvedcil k prechodu.

jarda
jarda (neregistrovaný)
11. 8. 2004 15:35 Nový

to je tak lacine :)))

celé vlákno

jezis marja zbudte se . na roota jsem chodim rad , ale tyhle polopravdy a amaterske clanky me dost znechucuji . opravdu to mate zapotrebi ? :)

porovnavate neporovnatelne jenom proto abyste ukazali , ze open gl rulez a direct x je shit ? :)) to ten clanek patri spis na nejakou flamewar na zive ne sem.

Jirka bianco Vagner
Jirka bianco Vagner (neregistrovaný)
12. 8. 2004 12:28 Nový

Re: to je tak lacine :)))

celé vlákno

Nejde mi to pod vousy, nechce se mi ale bohuzel musim souhlasit. Zbytecne srovnani, zbytecny clanek. :(

Skogen
Skogen (neregistrovaný)
11. 8. 2004 19:35 Nový

Bez titulku

celé vlákno

Nechapu jak si muze nekdo, kdo o sobe prohlasi toto (cituji): "Nicmene, horsi to bude s DirectX casti, protoze jsem o nem cetl pouze jednu knihu, ktera ale neni zrovna kvalitni.", porovnavat OG a DX. U takoveho typu clanku bych predpokladat dobrou znalost OBOU knihoven. Samozrejme za prepokladu, ze cilem ma byt skutecne srovnani...

Nechci rozebirat proc jedna nebo druha knihovna. Jsem ale toho nazoru, ze jestlize to nekdo mysli s 3D grafikou vazne, nemluve o profesinalnim uplatneni v hernim prumyslu, mel by zvladat knihovny obe. Ne vzdy je volba na vyvojari. V realnych projektech jsou casto nasazene technologie diktovany 'zvenku'. Muzeme stravit tydny tlucenim se po hlavach je-li lepsi OG nebo DX. Ve finale programator zvladajici obe vyhrava...

Jmeno
Jmeno (neregistrovaný)
11. 8. 2004 22:32 Nový

Minimální zdroják zobrazující vertex buffer

celé vlákno

No nevím, ale podle mě na zdroják kompletní aplikace, řešící analogickou úlohu v DirectX připadají z dané OpenGL ukázky asi tak sedm řádek ...:

Module modMain
Dim WithEvents D As Device, F As New Form()
Sub Main()
F.Show()
Dim PP As New PresentParameters() : PP.Windowed = True : PP.SwapEffect = SwapEffect.Discard
D = New Device(0, 1, F, 32, PP)
D.Clear(1, Color.Silver, 1, 0)
D.RenderState.Lighting = True

D.SetTransform(3, Matrix.PerspectiveFovLH(1, 1, 1, 500))
D.Transform.View = Matrix.LookAtLH(New Vector3(0, 0, 5), New Vector3(), New Vector3(0, 1, 0))

Dim V(3 - 1) As CustomVertex.PositionColored
V(0).X = 0 : V(0).Y = 1 : V(0).Z = 1 : V(0).Color = Color.Red.ToArgb
V(1).X = -1 : V(1).Y = -1 : V(1).Z = 1 : V(1).Color = Color.Green.ToArgb
V(2).X = 1 : V(2).Y = -1 : V(2).Z = 1 : V(2).Color = Color.Blue.ToArgb

D.BeginScene()
D.VertexFormat = CustomVertex.PositionColored.Format
D.DrawUserPrimitives(4, 1, V)
D.EndScene()
D.Present(): Application.Run(F)
End Sub
End Module

To srovnání je nejspíš opsané někde z webu, ale nemá mnoho společného s realitou. Autor přece musí jasně vidět, že v kódu DX jsou kontroly chyb a další redundantní věci.

Naopak nastavit třeba jen PIXELFORMATDESCRIPTOR pro OpenGL zabere ve Windows aspoň deset řádků...

Mormegil
Mormegil (neregistrovaný)
12. 8. 2004 13:31 Nový

Re: Minimální zdroják zobrazující vertex buffer

celé vlákno

Tedy, psat na Rootu ukazku zdrojaku ve Visual Basicu (je to VB, ne?), to je docela odvaha. :-]

Jmeno
Jmeno (neregistrovaný)
11. 8. 2004 22:40 Nový

Tak to dopadá....

celé vlákno

Tak to dopadá, když se srovnávaj dvě věci a přitom se rozumí jen jedné z nich.

Zákonitě ta druhá vypadne ze srovnání zamotanější a delší....

Kania
Kania (neregistrovaný)
18. 8. 2004 4:13 Nový

Ještě srovnání DX v IDE

celé vlákno

Ještě přidám link na tu ukázku, jak se jeví v moderním IDE. Objektové rozhraní je mj. o silný typový kontrole, o možnosti dědit a modifikovat objekty, o možnosti se nechat při psaní vést IDE a rozhraním a nemuset si pamatovat plochou strukturu procedurálních API.

http://www.zephir.wz.cz/images/directx.gif

limuhob
limuhob (neregistrovaný)
20. 8. 2004 11:35 Nový

Re: Ještě srovnání DX v IDE

celé vlákno

Doufám že si pod pojmem silná typová kontrola nemyslel statická typová kontrola. Jinak OK.

Zasílat nově přidané příspěvky e-mailem