Programmēšana

3D grafikas programmēšana Java, 3. daļa: OpenGL

Ir pagājis kāds laiks kopš mūsu pēdējās šīs sērijas daļas par 3D grafikas programmēšanu Java (vairāk par to šīs slejas beigās). Šeit ir ātra atsvaidzināšana par to, ko mēs pēdējo reizi apspriedām un kur mēs to pārtraucām.

Iepriekšējās divās kolonnās (sk. Resursi) mēs izpētījām Java 3D. Mēs apspriedām statisko saturu un mazās ainas, pēc tam izmantojām lielākus ainu grafikus un iebūvējām interaktivitāti dažās pamata 3D pasaulēs.

Tagad, kad jūs zināt mazliet par Java 3D lietošanu, ir pienācis laiks salīdzināt un salīdzināt Java 3D pieeju 3D grafikai ar vadošo grafikas API pretendentu: OpenGL.

Lūdzu, ņemiet vērā, ka šis raksts sākotnēji bija paredzēts kā koda ietilpīgs, taču novēlotajam Arcane Technologies lēmumam par burvju iesiešanu (skatīt zemāk) bija nepieciešams noņemt kodu piemērus. Es ceru, ka šī raksta saturu var pielāgot nākotnes Java-OpenGL saistīšanai, kas vēl nav pieejama no OpenGL konsorcija.

Jebkurā gadījumā es esmu mēģinājis visas attiecīgās un noderīgās ar OpenGL saistītās atsauces un vietrāžus URL norādīt šīs slejas beigās esošajos resursos. Ja vēlaties turpināt iedziļināties Java-OpenGL, es ļoti iesaku jums pārskatīt šīs atsauces.

Java-OpenGL salīdzinājums ar Java 3D

Iepriekšējās Java 3D daļās es sniedzu Java 3D izmantošanas grafisko programmu stiprās un vājās puses. Atkārtosim šo sarakstu, bet dariet to, aplūkojot Java-OpenGL balstīto risinājumu stiprās un vājās puses, nevis Java 3D balstītos risinājumus.

Stiprās puses, lietojot OpenGL (un, paplašinot un kur norādīts, Java-OpenGL sasaistes):

  • OpenGL nodrošina grafisko procesuālo modeli

    Tas cieši atbilst daudziem grafikas programmētāju vēsturiski izmantotajiem algoritmiem un metodēm. Procesuālais modelis daudziem intuitīviem 3D grafikas cienītājiem vienlaikus ir intuitīvs un vienkāršs.

  • OpenGL nodrošina tiešu piekļuvi renderēšanas cauruļvadam

    Tas attiecas uz jebkuru no dažādām valodu saistvielām, ieskaitot lielāko daļu Java saistījumu. OpenGL dod programmētājiem iespēju tieši norādīt, kā grafika būtu jāatveido. Viens ne tikai mājiens un pieprasījumu tāpat kā ar Java 3D, viens nosaka.

  • OpenGL tiek optimizēts visos iespējamos veidos

    OpenGL ir optimizēts aparatūrā un programmatūrā, kā arī mērķtiecīgās platformās, sākot no lētākajiem datoriem un spēļu konsolēm līdz augstākās klases grafikas superdatoriem.

  • Visu veidu ar 3D grafiku saistītās aparatūras pārdevēji atbalsta OpenGL

    OpenGL ir

    standarts, pēc kura aparatūras pārdevēji mēra savu grafikas tehnoloģiju, nav neviena. Kad Microsoft ir pievienojies SGI Fārenheita iniciatīvā, daudziem kļūst arvien acīmredzamāk, ka tas faktiski ir Microsoft netiešs apliecinājums tam, ka OpenGL uzvarēja API karos 2D un 3D grafikai.

No otras puses, nekas nav ideāls. OpenGL un, protams, Java-OpenGL sasaistēm, ir daži būtiski trūkumi:

  • Procesuālās pieejas grafikas programmēšanai stiprās puses vienlaikus ir vājums daudziem Java programmētājiem

    Salīdzinoši jauniem programmētājiem, no kuriem daudzi, iespējams, ir saņēmuši pirmo formālo programmēšanas instrukciju Java, izmantojot objektorientētas metodikas, OpenGL procesuālā metode nav labi savienota ar objektorientētu pieeju un labu inženieru praksi.

  • Daudzu pārdevēju OpenGL optimizācijas mērķis ir samazināt aparatūras izvēli

    Katra pārdevēja interesēs ir izveidot patentētus paplašinājumus un veikt patentētas optimizācijas, lai pārdotu vairāk savas aparatūras. Tāpat kā visām aparatūras optimizācijām, jums jāizmanto paātrinātājam raksturīgas OpenGL optimizācijas, saprotot, ka katra vienas platformas optimizācija samazina pārnesamību un veiktspēju vairākām citām. Java 3D vispārīgākas optimizācijas mērķis galvenokārt ir palielināt Java 3D lietojumprogrammu pārnesamību.

  • Lai gan C saskarnes ar OpenGL ir visuresošas, Java saskarnes vēl nav standartizētas un nav plaši pieejamas

    Arcane Technologies Magician produkts vēl nesen bija nonācis tirgū, lai mainītu šo pārnesamības problēmu, taču līdz ar tā izbeigšanos vismaz šobrīd lielākā daļa ir Java-OpenGL starpplatformu stāsts. Vairāk par to zemāk.

  • OpenGL renderēšanas procesa iekšējo detaļu ekspozīcija var ievērojami sarežģīt citādi vienkāršas 3D grafikas programmas

    Jauda un elastība ir sarežģītības cena. Mūsdienu tehnoloģiju pasaules ātrās attīstības ciklos sarežģītība pati par sevi ir kaut kas jāizvairās, ja iespējams. Vecais teiciens par kļūdām ir patiess: jo vairāk koda rindiņu, jo vairāk kļūdu (kopumā).

Kā redzat no OpenGL balstītās pieejas plusiem un mīnusiem, Java-OpenGL ir spēcīgs daudzās jomās, kurās Java 3D ir vāja. OpenGL dod programmētājiem zema līmeņa piekļuvi renderēšanas procesam, no kura Java 3D nepārprotami izvairās, un OpenGL pašlaik ir pieejams daudz vairāk platformās nekā Java 3D (bez burvju māksliniekiem). Bet šī elastība ir saistīta ar iespējamo cenu: programmētājiem ir daudz vietas optimizācijai, kas gluži pretēji nozīmē, ka viņiem ir daudz vietas, lai kaut ko uzmāktu. Java 3D ir vairāk iebūvēta optimizācija un vienkāršāks programmēšanas modelis, kas var izrādīties īpaši noderīgs programmētājiem, kas ir jauni Java, 3D grafikas darbiem vai tīkla un sadalītas grafikas programmēšanai.

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