Module Rubygame::GL
In: ext/rubygame/rubygame_mixer.c

The GL module provides an interface to SDL‘s OpenGL-related functions, allowing a Rubygame application to create hardware-accelerated 3D graphics with OpenGL.

Please note that Rubygame itself does not provide an interface to OpenGL functions — only functions which allow Rubygame to work together with OpenGL. You will need to use another library, for example ruby-opengl, to actually create graphics with OpenGL.

Users who wish to use Rubygame Surfaces as textures in OpenGL should see also the Surface#pixels method.

Methods

Constants

RED_SIZE = INT2NUM(SDL_GL_RED_SIZE)
GREEN_SIZE = INT2NUM(SDL_GL_GREEN_SIZE)
BLUE_SIZE = INT2NUM(SDL_GL_BLUE_SIZE)
ALPHA_SIZE = INT2NUM(SDL_GL_ALPHA_SIZE)
BUFFER_SIZE = INT2NUM(SDL_GL_BUFFER_SIZE)
DOUBLEBUFFER = INT2NUM(SDL_GL_DOUBLEBUFFER)
DEPTH_SIZE = INT2NUM(SDL_GL_DEPTH_SIZE)
STENCIL_SIZE = INT2NUM(SDL_GL_STENCIL_SIZE)
ACCUM_RED_SIZE = INT2NUM(SDL_GL_ACCUM_RED_SIZE)
ACCUM_GREEN_SIZE = INT2NUM(SDL_GL_ACCUM_GREEN_SIZE)
ACCUM_BLUE_SIZE = INT2NUM(SDL_GL_ACCUM_BLUE_SIZE)
ACCUM_ALPHA_SIZE = INT2NUM(SDL_GL_ACCUM_ALPHA_SIZE)

Public Class methods

Return the value of the the SDL/OpenGL attribute identified by attrib, which should be one of the constants defined in the Rubygame::GL module. See set_attrib for a list of attribute constants.

This method is useful after using set_attrib and calling Screen#set_mode, to make sure the attribute is the expected value.

[Source]

/*  call-seq:
 *    get_attrib( attrib )  ->  Integer
 *
 *  Return the value of the the SDL/OpenGL attribute identified by +attrib+,
 *  which should be one of the constants defined in the Rubygame::GL module.
 *  See #set_attrib for a list of attribute constants.
 *
 *  This method is useful after using #set_attrib and calling Screen#set_mode,
 *  to make sure the attribute is the expected value.
 */
VALUE rbgm_gl_getattrib(VALUE module, VALUE attr)
{
  int val;
  if(SDL_GL_GetAttribute(NUM2INT(attr),&val)==-1)
    rb_raise(eSDLError,"GL get attribute failed: %s",SDL_GetError());
  return INT2NUM(val);
}

Set the SDL/OpenGL attribute attrib to value. This should be called before you call Screen#set_mode with the OPENGL flag. You may wish to use get_attrib after calling Screen#set_mode to confirm that the attribute is set to the desired value.

The full list of SDL/OpenGL attribute identifier constants (located under the Rubygame::GL module) is as follows:

RED_SIZE:Size of framebuffer red component, in bits.
GREEN_SIZE:Size of framebuffer green component, in bits.
BLUE_SIZE:Size of framebuffer blue component, in bits.
ALPHA_SIZE:Size of framebuffer alpha (opacity) component, in bits.
BUFFER_SIZE:Size of framebuffer, in bits.
DOUBLEBUFFER:Enable or disable double-buffering.
DEPTH_SIZE:Size of depth buffer, in bits.
STENCIL_SIZE:Size of stencil buffer, in bits.
ACCUM_RED_SIZE:Size of accumulation buffer red component, in bits.
ACCUM_GREEN_SIZE:Size of accumulation buffer green component, in bits.
ACCUM_BLUE_SIZE:Size of accumulation buffer blue component, in bits.
ACCUM_ALPHA_SIZE:Size of accumulation buffer alpha component, in bits.

[Source]

/*  call-seq:
 *    set_attrib( attrib, value )  ->  nil
 *
 *  Set the SDL/OpenGL attribute +attrib+ to +value+. This should be called
 *  *before* you call Screen#set_mode with the OPENGL flag. You may wish to
 *  use #get_attrib after calling Screen#set_mode to confirm that the attribute
 *  is set to the desired value.
 *
 *  The full list of SDL/OpenGL attribute identifier constants (located under
 *  the Rubygame::GL module) is as follows:
 *
 *  RED_SIZE::         Size of framebuffer red component, in bits.
 *  GREEN_SIZE::       Size of framebuffer green component, in bits.
 *  BLUE_SIZE::        Size of framebuffer blue component, in bits.
 *  ALPHA_SIZE::       Size of framebuffer alpha (opacity) component, in bits.
 *  BUFFER_SIZE::      Size of framebuffer, in bits.
 *  DOUBLEBUFFER::     Enable or disable double-buffering.
 *  DEPTH_SIZE::       Size of depth buffer, in bits.
 *  STENCIL_SIZE::     Size of stencil buffer, in bits.
 *  ACCUM_RED_SIZE::   Size of accumulation buffer red component, in bits.
 *  ACCUM_GREEN_SIZE:: Size of accumulation buffer green component, in bits.
 *  ACCUM_BLUE_SIZE::  Size of accumulation buffer blue component, in bits.
 *  ACCUM_ALPHA_SIZE:: Size of accumulation buffer alpha component, in bits.
 *  
 */
VALUE rbgm_gl_setattrib(VALUE module,VALUE attr,VALUE val)
{
  if(SDL_GL_SetAttribute(NUM2INT(attr),NUM2INT(val))==-1)
    rb_raise(eSDLError,"GL set attribute failed: %s",SDL_GetError());
  return Qnil;
}

Swap the back and front buffers, for double-buffered OpenGL displays. Should be safe to use (albeit with no effect) on single-buffered OpenGL displays.

[Source]

/*  call-seq:
 *    swap_buffers( )  ->  nil
 *
 *  Swap the back and front buffers, for double-buffered OpenGL displays.
 *  Should be safe to use (albeit with no effect) on single-buffered OpenGL 
 *  displays.
 */
VALUE rbgm_gl_swapbuffers(VALUE module)
{
  SDL_GL_SwapBuffers();
  return Qnil;
}

[Validate]