Programování

Programování 3D grafiky v Javě, část 3: OpenGL

Od našeho posledního pokračování této série o programování 3D grafiky v Javě uběhla doba (více na konci tohoto sloupce). Zde je krátká osvěta o tom, o čem jsme diskutovali naposledy a kde jsme skončili.

V předchozích dvou sloupcích (viz Zdroje) jsme prozkoumali prostředí Java 3D. Diskutovali jsme o statickém obsahu a malých scénách, poté jsme použili větší grafy scén a zabudovali jsme interaktivitu do některých základních 3D světů.

Nyní, když víte něco o používání Java 3D, je čas porovnat a porovnat přístup Java 3D k 3D grafice s předním uchazečem o grafické rozhraní API: OpenGL.

Vezměte prosím na vědomí, že tento článek měl původně být náročný na kód, ale pozdní rozhodnutí společnosti Arcane Technologies týkající se vazby kouzelníka (viz níže) si vyžádalo odstranění příkladů kódu. Doufám, že obsah tohoto článku bude možné upravit pro budoucí vazbu Java-OpenGL, která dosud není k dispozici v konsorciu OpenGL.

V každém případě jsem se snažil poskytnout všechny relevantní a užitečné odkazy a adresy URL související s OpenGL ve zdrojích na konci tohoto sloupce. Pokud byste se chtěli hlouběji zabývat Java-OpenGL, důrazně vám doporučujeme tyto reference zkontrolovat.

Porovnání Java-OpenGL s Java 3D

V předchozích částech Java 3D jsem uvedl seznam silných a slabých stránek používání Java 3D pro grafické aplikace. Zopakujme si tento seznam, ale podívejme se na silné a slabé stránky řešení založených na prostředí Java-OpenGL namísto řešení založených na prostředí Java 3D.

Silné stránky používání OpenGL (a podle rozšíření a tam, kde je uvedeno, vazby Java-OpenGL):

  • OpenGL poskytuje procedurální model grafiky

    To úzce odpovídá mnoha algoritmům a metodám, které grafičtí programátoři historicky používali. Procedurální model je najednou intuitivní a přímý pro mnoho zkušených milovníků 3D grafiky.

  • OpenGL poskytuje přímý přístup k vykreslovacímu kanálu

    To platí pro jakoukoli z různých jazykových vazeb, včetně většiny vazeb Java. OpenGL umožňuje programátorům přímo určit, jak má být grafika vykreslena. Jeden nejen náznak a žádost jako u Java 3D, jeden stanoví.

  • OpenGL je optimalizován všemi možnými způsoby

    OpenGL je optimalizován v oblasti hardwaru a softwaru a cílených platforem od nejlevnějších počítačů a herních konzolí až po špičkové grafické superpočítače.

  • Prodejci všech druhů hardwaru souvisejícího s 3D grafikou podporují OpenGL

    OpenGL je

    the

    standard, podle kterého prodejci hardwaru měří svou grafickou technologii, žádný. Vzhledem k tomu, že se společnost Microsoft připojila k SGI v rámci iniciativy Fahrenheit, je stále více zřejmé, že se jedná o nepřímé uznání společnosti Microsoft, že OpenGL vyhrála války API pro 2D a 3D grafiku.

Na druhou stranu nic není dokonalé. OpenGL a určitě vazby Java-OpenGL mají některé významné nedostatky:

  • Silné stránky procedurálního přístupu k programování grafiky jsou současně slabinou mnoha programátorů Java

    Pro relativně nové programátory, z nichž mnozí možná dostali první formální programovací instrukci v Javě pomocí objektově orientovaných metodik, procedurální metoda OpenGL není dobře propojena s objektově orientovaným přístupem a dobrou inženýrskou praxí.

  • Optimalizace OpenGL mnoha dodavatelů má snížit výběr hardwaru

    Je v nejlepším zájmu každého dodavatele budovat proprietární rozšíření a provádět proprietární optimalizace pro prodej více vlastního hardwaru. Stejně jako u všech hardwarových optimalizací musíte použít optimalizace OpenGL specifické pro akcelerátor s tím, že každá optimalizace pro jednu platformu snižuje přenositelnost a výkon pro několik dalších. Obecnější optimalizace Java 3D se většinou zaměřují na maximalizaci přenositelnosti aplikací Java 3D.

  • Zatímco rozhraní C pro OpenGL jsou všudypřítomná, rozhraní Java ještě nejsou standardizovaná a nejsou široce dostupná

    Produkt Magician od společnosti Arcane Technologies byl donedávna na trhu, aby změnil tento problém s přenositelností, ale s jeho zánikem jde přinejmenším v současné době velká část multiplatformního příběhu pro Java-OpenGL. Více o tom níže.

  • Expozice OpenGL vnitřních detailů procesu vykreslování může výrazně komplikovat jinak jednoduché 3D grafické programy

    Síla a flexibilita stojí za cenu složitosti. V rychlých vývojových cyklech dnešního technologického světa je složitost sama o sobě něčemu, čemu je třeba se pokud možno vyhnout. Staré přísloví o chybách je pravdivé: čím více řádků kódu, tím více chyb (obecně).

Jak vidíte z výhod a nevýhod přístupů založených na OpenGL, Java-OpenGL je silná v mnoha oblastech, ve kterých je Java 3D slabá. OpenGL poskytuje programátorům nízkoúrovňový přístup k procesu vykreslování, kterému se Java 3D výslovně vyhýbá, a OpenGL je v současné době k dispozici na mnohem více platformách než Java 3D (kromě kouzelníka). Tato flexibilita však přichází s potenciální cenou: programátoři mají velký prostor pro optimalizaci, což naopak znamená, že mají velký prostor na to, aby to pokazili. Java 3D má více integrované optimalizace a jednodušší programovací model, který se může ukázat jako obzvláště užitečný pro programátory začínající v Javě, práci s 3D grafikou nebo síťové a distribuované grafické programování.

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