Powiązania Java dla OpenGL

Java Binding for OpenGL API to specyfikacja JSR API (JSR 231) dla Java Platform, Standard Edition , która umożliwia korzystanie z OpenGL na platformie Java (platforma programowa) . Istnieje również Java Binding dla OpenGL ES API (JSR 239) dla platformy Java Micro Edition .

Koncepcje programowania

Core OpenGL API i bibliotek GLU są dostępne z Javy za pośrednictwem cienkiego opakowania, które wygląda bardzo podobnie do oryginalnego OpenGL C API, z wyjątkiem procedur GLU NURBS , które nie są ujawniane przez publiczne API.

Wszystkie biblioteki specyficzne dla platformy (dostępne z CGL API dla Mac OS X , GLX dla X Window System i WGL dla Microsoft Windows ) są również wyodrębniane w celu stworzenia niezależnego od platformy sposobu wybierania atrybutów bufora ramki i wykonywania specyficznych dla platformy operacji na buforze ramki.

Rozszerzenia specyficzne dla platformy nie są zawarte w publicznym interfejsie API. Każda implementacja może eksportować niektóre z tych interfejsów API za pośrednictwem GL.getPlatformGLExtensions() i GL.getExtension(String) , które zwracają obiekty, których typy danych są specyficzne dla danej implementacji.

Przykład

Ten przykład pokazuje, jak narysować wielokąt (bez inicjalizacji lub odświeżania kodu). Oto referencyjna C :

   
      
    
       
     
        
     int  DrawGLScene  (  GLvoid  )  {  glClear  (  GL_COLOR_BUFFER_BIT  |  GL_DEPTH_BUFFER_BIT  );  glLoadIdentity  ();  glTranslatef  (  -1.5f  ,  0.0f  ,  -6.0f  );  // Przesuń w lewo o 1,5 jednostki  glBegin  (  GL_TRIANGLES  );  //Rysowanie przy użyciu trójkątów  glVertex3f  (  0.0f  ,  1.0f  ,  0.0f  );  // Top  glVertex3f   
       
    	
      
     
       
     (  -1.0f  ,  -1.0f  ,  0.0f  );  // Dolny lewy  glVertex3f  (  1.0f  ,  -1.0f  ,  0.0f  );  // Dolny prawy  glEnd  ();  glTranslatef  (  3.0f  ,  0.0f  ,  0.0f  );  glBegin  (  GL_QUADS  );  // Narysuj Quad  glVertex3f  (  -1.0f  ,  1.0f  ,  0.0f  );  // Lewy górny róg  glVertex3f     
       
      
    
    
     
  (  1.0f  ,  1.0f  ,  0.0f  );  // Prawy górny róg  glVertex3f  (  1.0f  ,  -1.0f  ,  0.0f  );  // Prawy dolny róg  glVertex3f  (  -1.0f  ,  -1.0f  ,  0.0f  );  // dolny lewy  glEnd  ();  glWypłucz  ();  zwróć  PRAWDA  ;  } 

Co przekłada się na następującą implementację Java :

     
       
     
   
      publiczny  pusty  wyświetlacz  (  GLAutoDrawable  glDrawable  )  {  final  GL  gl  =  glDrawable  .  getGL  ();  gl  .  glClear  (  GL  .  GL_COLOR_BUFFER_BIT  |  GL  .  GL_DEPTH_BUFFER_BIT  );  gl  .  glLoadIdentity  ();  gl  .  glTranslatef  (  -  1.5f  ,  0.0f  ,  -  6.0f  
    
       
     
     );  // Przesuń w lewo 1,5 jednostek  gl  .  glBegin  (  GL  .  GL_TRIANGLES  );  // Rysowanie za pomocą trójkątów  gl  .  glVertex3f  (  0.0f  ,  1.0f  ,  0.0f  );  // górny  gl  .  glVertex3f  (  -1.0f  ,  -1.0f  ,  0.0f  )  ;  _  // Dolny lewy  gl  .  glVertex3f  (  1.0f  ,  -  1.0f   
   
     
    
      
     ,  0,0f  );  // Dolny prawy  gl  .  glEnd  ();  gl  .  glTranslatef  (  3.0f  ,  0.0f  ,  0.0f  );  gl  .  glBegin  (  GL  .  GL_QUADS  );  // Narysuj Quad  gl  .  glVertex3f  (  -1.0f  ,  1.0f  ,  0.0f  )  ;  // górny lewy  gl  .  glVertex3f  (  1.0f    
      
     
   
   
  ,  1.0f  ,  0.0f  );  // górny prawy  gl  .  glVertex3f  (  1.0f  ,  -1.0f  ,  0.0f  )  ;  // Dolny prawy  gl  .  glVertex3f  (  -1.0f  ,  -1.0f  ,  0.0f  )  ;  _  // Dolny lewy  gl  .  glEnd  ();  gl  .  glWypłucz  ();  } 

Implementacje

Zobacz też

Linki zewnętrzne