comparison src/video/SDL_video.c @ 3100:7dc982143c06

Date: Sun, 22 Mar 2009 12:52:29 +0000 From: Luke Benstead Subject: OpenGL 3.0 Context Creation I've attached a patch which implements OpenGL 3.x context creation on the latest SVN. I've added two options to SDL_GL_SetAttribute, these are SDL_GL_CONTEXT_MAJOR_VERSION and SDL_GL_CONTEXT_MINOR_VERSION. These default to 2 and 1 respectively. If the major version is less than 3 then the current context creation method is used, otherwise the appropriate new context creation function is called (depending on the platform). Sample code: if (SDL_Init(SDL_INIT_VIDEO) != 0) { printf("Unable to initialize SDL: %s\n", SDL_GetError()); return 1; } SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); //Without these 2 lines, SDL will create a GL 2.x context SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_Surface* screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL | SDL_FULLSCREEN ); I've implemented context creation on both Win32 and X and run basic tests on both. This patch doesn't provide access to all the options allowed by the new context creation (e.g. shared contexts, forward compatible contexts) but they can be added pretty easily.
author Sam Lantinga <slouken@libsdl.org>
date Tue, 24 Mar 2009 10:43:53 +0000
parents 82e60908fab1
children fef1a835af43 7f684f249ec9
comparison
equal deleted inserted replaced
3099:82e60908fab1 3100:7dc982143c06
255 _this->gl_config.stereo = 0; 255 _this->gl_config.stereo = 0;
256 _this->gl_config.multisamplebuffers = 0; 256 _this->gl_config.multisamplebuffers = 0;
257 _this->gl_config.multisamplesamples = 0; 257 _this->gl_config.multisamplesamples = 0;
258 _this->gl_config.retained_backing = 1; 258 _this->gl_config.retained_backing = 1;
259 _this->gl_config.accelerated = -1; /* not known, don't set */ 259 _this->gl_config.accelerated = -1; /* not known, don't set */
260 _this->gl_config.major_version = 2;
261 _this->gl_config.minor_version = 1;
260 262
261 /* Initialize the video subsystem */ 263 /* Initialize the video subsystem */
262 if (_this->VideoInit(_this) < 0) { 264 if (_this->VideoInit(_this) < 0) {
263 SDL_VideoQuit(); 265 SDL_VideoQuit();
264 return -1; 266 return -1;
2692 _this->gl_config.accelerated = value; 2694 _this->gl_config.accelerated = value;
2693 break; 2695 break;
2694 case SDL_GL_RETAINED_BACKING: 2696 case SDL_GL_RETAINED_BACKING:
2695 _this->gl_config.retained_backing = value; 2697 _this->gl_config.retained_backing = value;
2696 break; 2698 break;
2699 case SDL_GL_CONTEXT_MAJOR_VERSION:
2700 _this->gl_config.major_version = value;
2701 break;
2702 case SDL_GL_CONTEXT_MINOR_VERSION:
2703 _this->gl_config.minor_version = value;
2704 break;
2697 default: 2705 default:
2698 SDL_SetError("Unknown OpenGL attribute"); 2706 SDL_SetError("Unknown OpenGL attribute");
2699 retval = -1; 2707 retval = -1;
2700 break; 2708 break;
2701 } 2709 }