mirror of
https://github.com/n64dev/cen64.git
synced 2025-04-02 10:31:54 -04:00
44 lines
No EOL
1.8 KiB
C
44 lines
No EOL
1.8 KiB
C
#include "common.h"
|
|
#include "gl_common.h"
|
|
#include "gl_config.h"
|
|
#include "gl_hints.h"
|
|
|
|
#define SET_ATTRIBUTE_IF_VALID(ATTR, VALUE_TO_TEST) \
|
|
if ((VALUE_TO_TEST) != -1) \
|
|
{ \
|
|
SDL_GL_SetAttribute((ATTR), (VALUE_TO_TEST)); \
|
|
}
|
|
|
|
#define SET_ATTRIBUTE_STATIC_IF_VALID(ATTR, VALUE_TO_TEST) \
|
|
if ((VALUE_TO_TEST) != -1) \
|
|
{ \
|
|
SDL_GL_SetAttribute((ATTR), 1); \
|
|
}
|
|
|
|
cen64_gl_config *cen64_gl_config_create(cen64_gl_display display,
|
|
cen64_gl_screen screen, const cen64_gl_hints *hints, int *matching)
|
|
{
|
|
int idx = 0;
|
|
|
|
SET_ATTRIBUTE_STATIC_IF_VALID(SDL_GL_DOUBLEBUFFER, hints->double_buffered);
|
|
SET_ATTRIBUTE_STATIC_IF_VALID(SDL_GL_STEREO, hints->stereoscopic);
|
|
if (hints->rgb_color_depth != -1)
|
|
{
|
|
int component_depth = hints->rgb_color_depth > 0
|
|
? hints->rgb_color_depth / 3
|
|
: 0;
|
|
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, component_depth);
|
|
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, component_depth);
|
|
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, component_depth);
|
|
}
|
|
SET_ATTRIBUTE_IF_VALID(SDL_GL_ALPHA_SIZE, hints->alpha_color_depth);
|
|
|
|
SET_ATTRIBUTE_IF_VALID(SDL_GL_DEPTH_SIZE, hints->depth_buffer_size);
|
|
|
|
SET_ATTRIBUTE_IF_VALID(SDL_GL_STENCIL_SIZE, hints->stencil_buffer_size);
|
|
|
|
SET_ATTRIBUTE_IF_VALID(SDL_GL_ACCUM_RED_SIZE, hints->accum_buffer_red_bits);
|
|
SET_ATTRIBUTE_IF_VALID(SDL_GL_ACCUM_GREEN_SIZE, hints->accum_buffer_green_bits);
|
|
SET_ATTRIBUTE_IF_VALID(SDL_GL_ACCUM_BLUE_SIZE, hints->accum_buffer_blue_bits);
|
|
SET_ATTRIBUTE_IF_VALID(SDL_GL_ACCUM_ALPHA_SIZE, hints->accum_buffer_alpha_bits);
|
|
} |