SDL_GL_SetAttribute

Use this function to set an OpenGL window attribute before window creation.

Syntax

int SDL_GL_SetAttribute(SDL_GLattr attr,
                        int        value)

Function Parameters

attr

the OpenGL attribute to set; see Remarks for details

value

the desired value for the attribute

Return Value

Returns 0 on success or a negative error code on failure; call SDL_GetError() for more information.

Code Examples

SDL_Window *window;
SDL_GLContext context;

SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

window = SDL_CreateWindow("OpenGL Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_OPENGL);
if (!window) {
    fprintf(stderr, "Couldn't create window: %s\n", SDL_GetError());
    return;
}

context = SDL_GL_CreateContext(window);
if (!context) {
    fprintf(stderr, "Couldn't create context: %s\n", SDL_GetError());
    return;
}

printf("Red size: %d, Green size: %d, Blue size: %d\n",
    SDL_GL_GetAttribute(SDL_GL_RED_SIZE),
    SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE),
    SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE));

Remarks

This function sets the OpenGL attribute attr to value. The requested attributes should be set before creating an OpenGL window. You should use SDL_GL_GetAttribute() to check the values after creating the OpenGL context, since the values obtained can differ from the requested ones.

attr may be one of the following SDL_GLattr values:

SDL_GL_RED_SIZE

the minimum number of bits for the red channel of the color buffer; defaults to 3

SDL_GL_GREEN_SIZE

the minimum number of bits for the green channel of the color buffer; defaults to 3

SDL_GL_BLUE_SIZE

the minimum number of bits for the blue channel of the color buffer; defaults to 2

SDL_GL_ALPHA_SIZE

the minimum number of bits for the alpha channel of the color buffer; defaults to 0

SDL_GL_BUFFER_SIZE

defaults to 0

SDL_GL_DOUBLEBUFFER

whether the output is single or double buffered; defaults to double buffering on

SDL_GL_DEPTH_SIZE

the minimum number of bits in the depth buffer; defaults to 16

SDL_GL_STENCIL_SIZE

the minimum number of bits in the stencil buffer; defaults to 0

SDL_GL_ACCUM_RED_SIZE

the minimum number of bits for the red channel of the accumulation buffer; defaults to 0

SDL_GL_ACCUM_GREEN_SIZE

the minimum number of bits for the green channel of the accumulation buffer; defaults to 0

SDL_GL_ACCUM_BLUE_SIZE

the minimum number of bits for the blue channel of the accumulation buffer; defaults to 0

SDL_GL_ACCUM_ALPHA_SIZE

the minimum number of bits for the alpha channel of the accumulation buffer; defaults to 0

SDL_GL_STEREO

whether the output is stereo 3D; defaults to off

SDL_GL_MULTISAMPLEBUFFERS

the number of buffers used for multisample anti-aliasing; defaults to 0; see Remarks for details

SDL_GL_MULTISAMPLESAMPLES

the number of samples used around the current pixel used for multisample anti-aliasing; defaults to 0; see Remarks for details

SDL_GL_ACCELERATED_VISUAL

set to 1 to require hardware acceleration, set to 0 to force software rendering; defaults to allow either

SDL_GL_RETAINED_BACKING

not used (deprecated)

SDL_GL_CONTEXT_MAJOR_VERSION

OpenGL context major version; see Remarks for details

SDL_GL_CONTEXT_MINOR_VERSION

OpenGL context minor version; see Remarks for details


CategoryAPI, CategoryVideo

SDL_GL_SetAttribute (last edited 2011-01-04 18:36:37 by SheenaSmith)

Feedback
Please include your contact information if you'd like to receive a reply.
Submit