Programovanie

Programovanie 3D grafiky v prostredí Java, časť 3: OpenGL

Je to už nejaký čas, čo sme od našej poslednej série v tejto sérii venovali programovaniu 3D grafiky v Jave (viac na konci tohto stĺpca). Tu je krátka informácia o tom, o čom sme diskutovali naposledy a kde sme skončili.

V predchádzajúcich dvoch stĺpcoch (pozri Zdroje) sme skúmali Java 3D. Diskutovali sme o statickom obsahu a malých scénach, potom sme použili väčšie grafy scén a zabudovali sme interaktivitu do niektorých základných 3D svetov.

Teraz, keď už viete niečo o používaní Java 3D, je čas porovnať a porovnať prístup Java 3D k 3D grafike s popredným uchádzačom o grafické API: OpenGL.

Upozorňujeme, že tento článok mal byť pôvodne náročný na kód, ale posledné rozhodnutie spoločnosti Arcane Technologies týkajúce sa viazania kúzelníkov (pozri nižšie) si vyžiadalo odstránenie príkladov kódu. Dúfam, že obsah tohto článku bude možné upraviť pre budúcu väzbu Java-OpenGL, ktorá zatiaľ nebude dostupná pre konzorcium OpenGL.

V každom prípade som sa snažil poskytnúť všetky relevantné a užitočné odkazy a adresy URL súvisiace s OpenGL v zdrojoch na konci tohto stĺpca. Ak by ste sa chceli prehĺbiť v prostredí Java-OpenGL, dôrazne vám odporúčame prečítať si tieto referencie.

Porovnanie Java-OpenGL s Java 3D

V predchádzajúcich častiach v Java 3D som uviedol zoznam silných a slabých stránok používania Java 3D pre grafické aplikácie. Zopakujme si tento zoznam, ale urobme to tak, že sa pozrieme na silné a slabé stránky riešení založených na prostredí Java-OpenGL namiesto riešení založených na prostredí Java 3D.

Silné stránky používania OpenGL (a, podľa rozšírenia, a kde je uvedené, väzieb Java-OpenGL):

  • OpenGL poskytuje procedurálny model grafiky

    To sa veľmi zhoduje s mnohými algoritmami a metódami, ktoré grafickí programátori v minulosti používali. Procedurálny model je súčasne intuitívny a priamy pre mnohých uznávaných fanúšikov 3D grafiky.

  • OpenGL poskytuje priamy prístup k vykresľovaciemu kanálu

    To platí pre ktorúkoľvek z rôznych jazykových väzieb, vrátane väčšiny väzieb Java. OpenGL oprávňuje programátorov priamo určiť, ako sa má grafika vykresliť. Jeden nielen náznak a žiadosť ako pri Java 3D, jeden stanovuje.

  • OpenGL je optimalizovaný všetkým možným spôsobom

    OpenGL je optimalizovaný v hardvéri a softvéri a na cielené platformy, od najlacnejších počítačov a herných konzol až po špičkové grafické superpočítače.

  • Predajcovia všetkých druhov hardvéru súvisiaceho s 3D grafikou podporujú OpenGL

    OpenGL je

    the

    štandard, podľa ktorého predajcovia hardvéru merajú svoje grafické technológie, nič. Keď sa Microsoft pripojil k SGI v iniciatíve Fahrenheit, mnohým je čoraz viac zrejmé, že je to v skutočnosti nepriame potvrdenie spoločnosti Microsoft, že OpenGL vyhrala vojny API pre 2D a 3D grafiku.

Na druhej strane, nič nie je dokonalé. OpenGL a určite väzby Java-OpenGL majú niektoré významné nedostatky:

  • Silné stránky procedurálneho prístupu k grafickému programovaniu sú súčasne slabinou pre mnohých programátorov Java

    Pre relatívne nových programátorov, z ktorých mnohí možno dostali svoju prvú formálnu výučbu programovania v Jave pomocou objektovo-orientovaných metodológií, procedurálna metóda OpenGL zle zapadá do objektovo orientovaného prístupu a dobrej inžinierskej praxe.

  • Optimalizácia OpenGL mnohých dodávateľov má znížiť výber hardvéru

    Je v najlepšom záujme každého dodávateľa vybudovať proprietárne rozšírenia a vykonať proprietárne optimalizácie s cieľom predať viac vlastného hardvéru. Rovnako ako pri všetkých hardvérových optimalizáciách, musíte použiť optimalizáciu OpenGL špecifickú pre akcelerátor s tým, že každá optimalizácia pre jednu platformu znižuje prenosnosť a výkon pre niekoľko ďalších. Všeobecnejšia optimalizácia Java 3D sa väčšinou zameriava na maximalizáciu prenosnosti aplikácií Java 3D.

  • Zatiaľ čo C rozhrania k OpenGL sú všadeprítomné, rozhrania Java ešte nie sú štandardizované a nie sú široko dostupné

    Produkt Magician od spoločnosti Arcane Technologies bol donedávna na trhu, aby zmenil tento problém s prenosnosťou, ale s jeho zánikom je spojená veľká časť multiplatformového príbehu Java-OpenGL, prinajmenšom v súčasnosti. Viac o tomto nižšie.

  • Expozícia OpenGL vnútorných detailov procesu vykresľovania môže výrazne komplikovať inak jednoduché programy 3D grafiky

    Sila a flexibilita prichádzajú za cenu zložitosti. V rýchlych vývojových cykloch dnešného technologického sveta je zložitosť sama osebe niečomu, čomu by sa bolo treba vyhnúť, kde je to možné. Staré porekadlo o chybách je pravdivé: čím viac riadkov kódu, tým viac chýb (všeobecne).

Ako vidíte z výhod a nevýhod prístupov založených na OpenGL, Java-OpenGL je silná v mnohých oblastiach, v ktorých je Java 3D slabá. OpenGL poskytuje programátorom prístup na nízkej úrovni k procesu vykresľovania, ktorému sa Java 3D výslovne vyhýba, a OpenGL je v súčasnosti k dispozícii na oveľa viacerých platformách ako Java 3D (okrem kúzelníka). Táto flexibilita však prichádza s potenciálnou cenou: programátori majú veľa priestoru na optimalizáciu, čo naopak znamená, že majú veľa priestoru na pokazenie. Java 3D má zabudovanú optimalizáciu a ľahší programovací model, ktorý sa môže ukázať ako obzvlášť užitočný pre programátorov začínajúcich v oblasti Java, 3D grafických prác alebo sieťovo distribuovaného grafického programovania.

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