Programiranje

Programiranje 3D grafike v Javi, 3. del: OpenGL

Že nekaj časa je minilo od našega zadnjega dela v tej seriji o programiranju 3D grafike v Javi (več o tem na koncu tega stolpca). Tu je kratka osvežitev o tem, o čem smo se zadnjič pogovarjali in kje smo končali.

V prejšnjih dveh stolpcih (glejte Viri) smo raziskali Java 3D. Razpravljali smo o statični vsebini in majhnih prizorih, nato pa uporabili večje grafe prizorov in vgradili interaktivnost v nekaj osnovnih 3D svetov.

Zdaj, ko veste malo o uporabi Java 3D, je čas, da pristop Java 3D primerjate in primerjate s 3D grafiko z vodilnim kandidatom za grafični API: OpenGL.

Upoštevajte, da je bil ta članek prvotno namenjen kodi, vendar je odločitev Arcane Technologies v zvezi z vezavo čarovnika (glej spodaj) zahtevala odstranitev primerov kode. Upam, da je vsebino tega članka mogoče prilagoditi za prihodnjo vezavo Java-OpenGL, ki pa še ni na voljo v konzorciju OpenGL.

V vsakem primeru sem si prizadeval zagotoviti vse ustrezne in uporabne reference in URL-je, povezane z OpenGL, v virih na koncu tega stolpca. Če bi radi nadaljevali Java-OpenGL, toplo priporočam, da pregledate te reference.

Primerjava Java-OpenGL z Java 3D

V prejšnjih delih Java 3D sem predstavil seznam prednosti in slabosti uporabe Java 3D za grafične aplikacije. Ponovimo ta seznam, vendar to storite tako, da preučite prednosti in slabosti rešitev na osnovi Java-OpenGL namesto rešitev na osnovi Java 3D.

Prednosti uporabe OpenGL (in s tem razširitve in, kjer je navedeno, vezi Java-OpenGL):

  • OpenGL ponuja proceduralni model grafike

    To se popolnoma ujema z mnogimi algoritmi in metodami, ki so jih grafični programerji v preteklosti že uporabljali. Proceduralni model je hkrati intuitiven in enostaven za številne izkušene ljubitelje 3D grafike.

  • OpenGL omogoča neposreden dostop do cevovoda upodabljanja

    To velja za katero koli različno vezavo jezika, vključno z večino vezi Java. OpenGL pooblašča programerje, da neposredno določijo, kako naj bo upodobljena grafika. Eden ne samo namig in prošnja kot pri Javi 3D, ena določa.

  • OpenGL je optimiziran na vse možne načine

    OpenGL je optimiziran za strojno in programsko opremo ter ciljne platforme, od najcenejših osebnih računalnikov in igralnih konzol do najbolj vrhunskih grafičnih superračunalnikov.

  • Ponudniki vseh vrst strojne opreme, povezane s 3D grafiko, podpirajo OpenGL

    OpenGL je

    standard, s katerim prodajalci strojne opreme merijo svojo grafično tehnologijo, ne ovira nobenega. Ko se je Microsoft pridružil družbi SGI v pobudi Fahrenheit, je marsikomu vse bolj očitno, da je to dejansko Microsoftovo posredno priznanje, da je OpenGL zmagal v API-vojnah za 2D in 3D grafiko.

Po drugi strani pa nič ni popolno. Povezave OpenGL in zagotovo Java-OpenGL imajo nekaj pomembnih pomanjkljivosti:

  • Prednosti postopkovnega pristopa k grafičnemu programiranju so hkrati šibkost mnogih programerjev Java

    Za razmeroma nove programerje, od katerih so mnogi morda dobili prvo formalno navodilo za programiranje v Javi z uporabo objektno usmerjenih metodologij, se proceduralna metoda OpenGL ne ujema z objektno usmerjenim pristopom in dobro inženirsko prakso.

  • Optimizacije OpenGL številnih ponudnikov naj bi zmanjšale izbiro strojne opreme

    Vsak prodajalec je v najboljšem interesu zgraditi lastniške razširitve in narediti lastniške optimizacije za prodajo več lastne strojne opreme. Tako kot pri vseh optimizacijah strojne opreme, morate tudi za optimizacijo OpenGL uporabiti pospeševalnik z razumevanjem, da vsaka optimizacija ene platforme zmanjšuje prenosljivost in zmogljivost več drugih. Splošnejše optimizacije Java 3D so namenjene predvsem povečanju prenosljivosti aplikacij Java 3D.

  • Čeprav so vmesniki C do OpenGL povsod razširjeni, vmesniki Java še niso standardizirani in niso splošno dostopni

    Izdelek Arcane Technologies Magician je bil do nedavnega na trgu, da bi spremenil to težavo s prenosljivostjo, toda s svojo propadjo gre vsaj za večino zgodb o različnih platformah za Java-OpenGL. Več o tem spodaj.

  • Izpostavljenost notranjih podrobnosti postopka upodabljanja OpenGL lahko znatno zaplete sicer preproste 3D-grafične programe

    Moč in prilagodljivost sta zapleteni. V hitrih razvojnih ciklih današnjega tehnološkega sveta je zapletenost sama po sebi nekaj, čemur se je treba izogniti. Stari rek o napakah drži: več vrstic kode, več napak (na splošno).

Kot lahko vidite iz prednosti in slabosti pristopov, ki temeljijo na OpenGL, je Java-OpenGL močan na številnih področjih, na katerih je Java 3D šibek. OpenGL programerjem omogoča nizek dostop do postopka upodabljanja, ki se ga Java 3D izrecno izogiba, in OpenGL je trenutno na voljo na veliko več platformah kot Java 3D (Magician poleg). Toda ta fleksibilnost ima potencialno ceno: programerji imajo veliko prostora za optimizacijo, kar nasprotno pomeni, da imajo veliko prostora, da stvari zajebajo. Java 3D ima več vgrajene optimizacije in enostavnejši model programiranja, ki se lahko izkaže za posebno uporabnega za programerje, ki so novi na Javi, 3D grafična dela ali mrežno in distribuirano grafično programiranje.

$config[zx-auto] not found$config[zx-overlay] not found