Module | Rubygame::GL |
In: |
ext/rubygame/rubygame_event2.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.
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) |
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.
/* 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. |
/* 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.
/* 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; }