Java OpenGL

JOGL
Utvecklare JogAmp Community
Stabil frisättning
2.3.2 / 10 oktober 2015 ; 7 år sedan ( 2015-10-10 )
Förhandsgranska release
2.3.2 / 10 oktober 2015 ; 7 år sedan ( 2015-10-10 )
Skrivet i Java , C
Operativ system Cross-plattform
Typ 3D-datorgrafikprogramvara (bibliotek/API)
Licens BSD-licens
Hemsida jogamp .org /jogl /www / Edit this at Wikidata

Java OpenGL ( JOGL ) är ett omslagsbibliotek som gör att OpenGL kan användas i programmeringsspråket Java . Det utvecklades ursprungligen av Kenneth Bradley Russell och Christopher John Kline, och vidareutvecklades av Sun Microsystems Game Technology Group. Sedan 2010 har det varit ett oberoende open source- projekt under en BSD-licens . Det är referensimplementeringen för Java Bindings for OpenGL (JSR-231).

JOGL ger tillgång till de flesta OpenGL-funktioner som är tillgängliga för C- språkprogram genom att använda Java Native Interface ( JNI). Den ger tillgång till både standard GL*-funktionerna och GLU*-funktionerna; OpenGL Utility Toolkit- biblioteket (GLUT) är dock inte tillgängligt för fönstersystemrelaterade anrop, eftersom Java har sina egna fönstersystem: Abstract Window Toolkit (AWT), Swing och vissa tillägg .

Design

Bas OpenGL C API, såväl som dess associerade Windowing API , nås i JOGL via Java Native Interface (JNI)-anrop. Som sådant måste det underliggande systemet stödja OpenGL för att JOGL ska fungera.

JOGL skiljer sig från vissa andra Java OpenGL-omslagsbibliotek genom att det bara exponerar det procedurmässiga OpenGL API:et via metoder på ett fåtal klasser, snarare än att försöka mappa OpenGL-funktionalitet till det objektorienterade programmeringsparadigmet . Faktum är att det mesta av JOGL-koden är autogenererad från OpenGL C-huvudfilerna via ett konverteringsverktyg som heter GlueGen , som programmerades specifikt för att underlätta skapandet av JOGL.

Status och standardisering

Från och med 2015 ger JOGL full tillgång till OpenGL 4.5-specifikationen samt nästan alla leverantörstillägg (och OpenCL , OpenMAX och OpenAL ). 1.1.0 - versionen är referensimplementeringen för JSR-231 (Java-bindningar för OpenGL) . Utgåvan 1.1.1 gav begränsad åtkomst till GLU NURBS , vilket gav rendering av krökta linjer och ytor via de traditionella GLU API:erna. 2.3.2 - versionen lade till stöd för OpenGL-versioner upp till 4.5 och OpenGL ES-versioner upp till 3.2.

Wayland och Vulkan support planeras.

Java2D-OpenGL interoperabilitet

Sedan Java SE 6 -versionen av Java -språket har Java2D (API: et för att rita tvådimensionell grafik i Java) och JOGL blivit interoperabla, vilket gör det möjligt att:

Handledningar

Kodexempel

    
        

           

         0 
         0 

        
             0  0  0  0 
             0     

              

            
        

        
        0
             

        0  0
        0  0

           0
     @Override  public  void  display  (  GLAutoDrawable  drawable  )  {  GL4  gl4  =  drawable  .  getGL  ().  getGL4  ();  gl4  .  glClearBufferfv  (  GL2ES3  .  GL_COLOR  ,  ,  clearColor  );  gl4  .  glClearBufferfv  (  GL2ES3  .  GL_DEPTH  ,  ,  clearDepth  );  {  FloatUtil  .  makeLookAt  (  visa  ,  ,  öga  ,  ,  vid  ,  ,  upp  ,  ,  tmp  );  FloatUtil  .  makePerspective  (  projektion  ,  ,  återställ  ,  45  f  ,  aspekt  ,  nära  ,  långt  );  FloatUtil  .  multiMatrix  (  projektion  ,  vy  );  // projektion *= visa  transformPointer  .  asFloatBuffer  ().  sätta  (  projektion  );  }  gl4  .  glUseProgram  (  programnamn  );  gl4  .  glBindVertexArray  (  vertexArrayName  .  get  (  ));  gl4  .  glBindBufferBase  (  GL2ES3  .  GL_UNIFORM_BUFFER  /*target*/  ,  1  /*TRANSFORM0, index*/  ,  bufferName  .  get  (  2  )  /*TRANSFORM, buffer*/  );  gl4  .  glBindTextureUnit  (  /*diffus*/  ,  textureName  .  get  (  ));  gl4  .  glBindSampler  (  /*diffus*/  ,  samplerName  .  get  (  ));  gl4  .  glDrawElements  (  GL  .  GL_TRIANGLES  ,  elementCount  ,  GL  .  GL_UNSIGNED_SHORT  ,  );  } 

Se även

  • Java-bindningar för OpenGL , Java Community Specification Request för vilken JOGL tillhandahåller en implementering
  • Ardor3D , en högpresterande, professionellt orienterad scengraf som använder flera bindningar för OpenGL och OpenGL-ES inklusive JOGL
  • Elflight Engine, en högpresterande 3D-spelmotor optimerad för webben
  • JMonkey Engine , ett högpresterande scengrafbaserat grafik-API som använder flera bindningar för OpenGL och OpenGL-ES inklusive JOGL
  • Poxnora , ett online multiplayer-spel med JOGL
  • RuneScape , en MMORPG som använder JOGL
  • Jake2 , en Java-port för Quake II som använder flera bindningar för OpenGL inklusive JOGL för dess grafiska API på låg nivå
  • Scilab , ett numeriskt datorprogram som använder JOGL för 2D, 3D-rendering
  • ClearVolume , ett JOGL-drivet realtidslivs-3D-visualiseringsbibliotek designat för avancerade volumetriska ljusarkmikroskop .
  • LWJGL , ett alternativt OpenGL-omslagsbibliotek med öppen källkod
  • Java OpenAL
  • Java OpenCL

externa länkar