Java OpenGL
Utvecklare | JogAmp Community |
---|---|
Stabil frisättning | 2.3.2 / 10 oktober 2015
|
Förhandsgranska release | 2.3.2 / 10 oktober 2015
|
Skrivet i | Java , C |
Operativ system | Cross-plattform |
Typ | 3D-datorgrafikprogramvara (bibliotek/API) |
Licens | BSD-licens |
Hemsida |
|
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:
- Överlägg Swing- komponenter (lätta menyer, verktygstips och andra widgets ) ovanpå OpenGL- rendering.
- Rita 3D OpenGL- grafik ovanpå Java2D- rendering (se här för en knapp med en OpenGL-ikon).
- Använd 3D-grafik var som helst där vanligtvis en Swing -widget skulle användas. (Inuti en JTable, JTree, ...)
- Rita Java2D- grafik ovanpå 3D OpenGL- rendering.
Handledningar
- OpenGL ES 2- exempel
- Hej triangel , gl3 och gl4 Hej triangel och textur. Proverna erbjuds i Java och Kotlin
- Java OpenGL Sample Pack , portering av g-truc OpenGL Sample Pack . De över 230 exemplen illustrerar nästan alla OpenGL-funktioner från ES 2.0 upp till de sista GL-tilläggen, samma av dem brukar också kallas AZDO (Almost Zero Driver Overhead).
- modern jogl-exempel , Porting of Learning Modern 3D-grafikprogrammering, Jason L. McKesson . Java och Kotlin sida vid sida.
- Omedelbart lägesexempel (enklaste exemplet, med den fasta pipeline)
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
- Officiell hemsida
- JOGL 2.3.x-specifikation
- JSR-231 Java Bindings för OpenGL webbplats
- tool kiet , The OpenGL Programming Guide-exempel som använder JOGL
- NeHes tutorials och exempelkod
- Konfigurera ett JogAmp JOGL-projekt i din favorit-IDE
- Viewer3D , en applet för att visa interaktivt 3D-innehåll med JOGL
- Eclipse OpenGL Pack OpenGL-plugin för Eclipse IDE