yagl

Latest News
Features
Projects/Screenshots
Documentation
Downloads
Forum
Links
Contact


Valid HTML 4.01 Transitional

visitors: 11539

Features

Yagl is short for yet another game programming library which describes its purpose very well. The Library is designed to be easy to use and wrap a lot of common lowlevel problems in a nice and handy interface. It provides the user a 2D graphics module, a 3D sound module and an input module for mouse, keyboard and joystick input. All modules are crossplattform ( for now Windows and Linux, a Mac Port can not be done due to the lack of hardware ).

Graphics
the graphics module is designed for 2D graphics output and focuses mainly on blitting images and printing text to screen. This is done ontop of OpenGL so you can easily mix Yagl drawing primitives with OpenGL commands. Yagl will preserve all OpenGL states it changes. Yagl can load Windows 24-bit bmp and PNG 24 and 32-bit images natively, optionally the user can load images from memory. Internally 32-bits are used for color encoding giving the user Alphablending and Colorkeying. core features of this module:

  • 2D graphics with full alpha blending for all drawing primitives
  • Easy integration with OpenGL, all drawing primitives can be used
  • drawing primitives: line, box, solid box
  • blitters: normal blit, scaled blit, roto blit, roto scale blit
  • all blitters can be used in solid and alphamasked mode
  • all blitters allow to only blit parts of a surface
  • tinting color settable for blitters
  • direct surface read/write access
  • limited direct framebuffer access ( only pixel wise )
  • loading of 24-bit Windows bmp files
  • loading of 24- and 32-bit PNG files


Audio
the sound module is based on OpenAL providing the user with full 3D sound. this means that you can load sound samples into RAM or stream sound from a file and position it in 3D space resulting in 3D sound. Additionally the doppler effect can be simulated by providing the sound module with velocity data for each playing source. Yagl can load and stream Wav, snd, au and a couple of other wavelet formats plus ogg files. core featuers of this module:

  • 3D sound via OpenAL, memory buffered or streamed
  • sound sources can be positioned in 3D space in realtime resulting in 3D sound effects
  • standard sound attributes like gain, pitch and roll off are controlable
  • loading and streaming of WAV, snd, au and other wavelet formats
  • loading and streaming of Vorbis ogg files


Input
the input module of Yagl provices provides the user with possibilities to query state information of the keyboard, the mouse and up to 16 connected joysticks/joypads. the keyboard can either be queried for current keystates ( multikeypress-detection) and additionally be used as a buffered character input device which is handy for creating input boxes and the like. the later method also supports unicode. the mouse can be queried for its x and y axis, it's wheel position as well as up to 3 buttons ( left, right, middle ). Finally joysticks can be queried for up to 6 axis positions and 32 button states. core features of this module:

  • keyboard input, multikeypress detection and buffered character input ( Unicode support )
  • mouse input, x, y axis plus mousewheel position and 3 buttons queryable
  • joystick input, handling of up to 16 connected joysticks, up to 6 axis and 32-buttons pre joystick queryable


Yagl is based on a couple of libraries, namely:
  • GLfw, for crossplattform window and opengl context creation
  • FreeType 2, for loading ttf fonts
  • libpng, for decoding png files
  • OpenGL, for all drawing operations
  • OpenAL, for controlling and using the audio hardware
  • libogg, for decoding ogg files
  • libsndfile, for decoding various wavelet audio formats