Mercurial > sdl-ios-xcode
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 } |