Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AG_GL(3)		     Library Functions Manual			AG_GL(3)

NAME
     AG_GL -- agar OpenGL specific routines

SYNOPSIS
     #include <agar/core.h>
     #include <agar/gui.h>
     #include <agar/gui/opengl.h>

DESCRIPTION
     This  manual page documents the OpenGL-specific functions exported by Agar.
     These functions are available if Agar  was  compiled  with  OpenGL  support
     (i.e., HAVE_OPENGL is defined after including the headers above).

     Those  functions  are  mostly useful for implementing new OpenGL-based Agar
     drivers (see AG_Driver(3)).  Some of these functions  are	also  useful  to
     simplify texture management when implementing OpenGL-specific Agar-GUI wid-
     gets.

OPENGL CONTEXT MANAGEMENT
     void AG_GL_InitContext(void *drv, AG_GL_Context *gl)

     void AG_GL_SetViewport(void *drv, const AG_Rect *rect)

     void AG_GL_DestroyContext(void *drv)

     The  AG_GL_InitContext()  function is to be invoked by OpenGL-specific Agar
     drivers to initialize the GL context for rendering Agar GUI elements.  This
     involves setting the projection and view matrices as well as various OpenGL
     options.  AG_GL_InitContext() saves the current OpenGL state so that it can
     be later restored.  The  gl  argument  should  point  to  an  uninitialized
     AG_GL_Context structure.

     The  AG_GL_SetViewPort()  function configures the GL viewport.  In addition
     to invoking glViewport(3), this function also updates internal  resolution-
     dependent states.

     The  AG_GL_DestroyContext()  routines  frees  Agar's  internal OpenGL state
     (restoring the state previously saved in AG_GL_InitContext()).

     Multiple-window drivers will typically create a single OpenGL  context  per
     window,  but  single-window drivers may initialize and destroy the GL state
     more than once (see the AG_DRIVER_SW_OVERLAY option in AG_DriverSw(3)).

TEXTURE/SURFACE MANAGEMENT
     void AG_GL_UploadTexture(AG_Driver *drv, Uint *texName, AG_Surface  *suSrc,
     AG_TexCoord *tc)

     void  AG_GL_UpdateTexture(AG_Driver  *drv, Uint texName, AG_Surface *suSrc,
     AG_TexCoord *tc)

     void AG_GL_DeleteTexture(AG_Driver *drv, Uint texName)

     void AG_GL_DeleteList(AG_Driver *drv, Uint listName)

     void AG_GL_BlitSurface(AG_Driver *drv, AG_Widget *wid, AG_Surface	*s,  int
     x, int y)

     void AG_GL_BlitSurfaceFrom(AG_Driver *drv, AG_Widget *widSrc, int surfName,
     AG_Rect *r, int x, int y)

     void  AG_GL_BlitSurfaceGL(AG_Driver  *drv,  AG_Widget  *wid, AG_Surface *s,
     float w, float h)

     void AG_GL_BlitSurfaceFromGL(AG_Driver *drv, AG_Widget *wid, int  surfName,
     float w, float h)

     void  AG_GL_BlitSurfaceFlippedGL(AG_Driver  *drv, AG_Widget *wid, int surf-
     Name, float w, float h)

     void AG_GL_BackupSurfaces(AG_Driver *drv, AG_Widget *wid)

     void AG_GL_RestoreSurfaces(AG_Driver *drv, AG_Widget *wid)

     void  AG_GL_RenderToSurface(AG_Driver  *drv,  AG_Widget  *wid,   AG_Surface
     **sDst)

     The AG_GL_UploadTexture() operation converts the specified AG_Surface(3) to
     an OpenGL texture, returning the GL texture handle in texName.  Texture co-
     ordinates	are  returned into tc if non-NULL (i.e., X/Y coordinates are 0.0
     and width/height are computed from the original dimensions divided  by  the
     texture's power-of-two dimensions).

     The  AG_GL_UpdateTexture() operation uploads a new surface as the specified
     texture ID.  Similarly to AG_GL_UploadTexture(),  texture	coordinates  are
     returned into tc if non-NULL.

     The  AG_GL_DeleteTexture()  operation arranges for the specified GL texture
     to be deleted as soon as possible.  Unlike a direct  call	to  glDeleteTex-
     tures(3), using the AG_GL_DeleteTexture() function is thread-safe.

     Similarly,  AG_GL_DeleteList() arranges for the given GL display list to be
     deleted as soon as possible.

     The remaining functions AG_GL_BlitSurface(), AG_GL_BlitSurfaceFrom(),  etc.
     are generic OpenGL backends to the corresponding driver surface/texture op-
     erations  (i.e.,  blitSurface(), blitSurfaceFrom(), etc.)	See AG_Driver(3)
     for details.

RENDERING PRIMITIVES
     void AG_GL_FillRect(AG_Driver *drv, AG_Rect r, AG_Color c)

     void AG_GL_PutPixel(AG_Driver *drv, int x, int y, AG_Color c)

     void AG_GL_PutPixel32(AG_Driver *drv, int x, int y, Uint32 c)

     void AG_GL_PutPixelRGB(AG_Driver *drv, int x, int	y,  Uint8  r,  Uint8  g,
     Uint8 b)

     void  AG_GL_BlendPixel(AG_Driver *drv, int x, int y, AG_Color C, AG_AlphaFn
     fnSrc, AG_AlphaFn fnDst)

     void AG_GL_DrawLine(AG_Driver *drv,  int  x1,  int  y1,  int  x2,	int  y2,
     AG_Color C)

     void AG_GL_DrawLineH(AG_Driver *drv, int x1, int x2, int y, AG_Color c)

     void AG_GL_DrawLineV(AG_Driver *drv, int x, int y1, int y2, AG_Color c)

     void  AG_GL_DrawLineBlended(AG_Driver *drv, int x1, int y1, int x2, int y2,
     AG_Color c, AG_AlphaFn fnSrc, AG_AlphaFn fnDst)

     void AG_GL_DrawArrowUp(AG_Driver *drv, int x, int y, int h, AG_Color C[2])

     void AG_GL_DrawArrowDown(AG_Driver *drv, int x,  int  y,  int  h,	AG_Color
     C[2])

     void  AG_GL_DrawArrowLeft(AG_Driver  *drv,  int  x,  int y, int h, AG_Color
     C[2])

     void AG_GL_DrawArrowRight(AG_Driver *drv, int x, int  y,  int  h,	AG_Color
     C[2])

     void AG_GL_DrawRectDithered(AG_Driver *drv, AG_Rect r, AG_Color c)

     void  AG_GL_DrawBoxRounded(AG_Driver  *drv,  AG_Rect  r, int z, int radius,
     AG_Color C[3])

     void AG_GL_DrawBoxRoundedTop(AG_Driver *drv, AG_Rect r, int z, int  radius,
     AG_Color C[3])

     void AG_GL_DrawCircle(AG_Driver *drv, int x, int y, int r, AG_Color C)

     void AG_GL_DrawCircle2(AG_Driver *drv, int x, int y, int r, AG_Color C)

     void AG_GL_DrawRectFilled(AG_Driver *drv, AG_Rect r, AG_Color c)

     void  AG_GL_DrawRectBlended(AG_Driver  *drv,  AG_Rect r, AG_Color c, AG_Al-
     phaFn fnSrc, AG_AlphaFn fnDst)

     void AG_GL_UpdateGlyph(AG_Driver *drv, AG_Glyph *glyph)

     void AG_GL_DrawGlyph(AG_Driver *drv, const AG_Glyph *glyph, int x, int y)

     These functions are generic OpenGL backends  to  the  corresponding  driver
     surface/texture operations (e.g., fillRect(), putPixel(), etc); see AG_Dri-
     ver(3) for details.

SEE ALSO
     AG_Driver(3), AG_Intro(3), AG_Widget(3), AG_Window(3)

HISTORY
     The AG_GL interface first appeared in Agar 1.4.0.

Agar 1.7			December 21, 2022			AG_GL(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=AG_GL&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help