Added a renderer flag to expose whether a renderer supports render to texture.

This commit is contained in:
Sam Lantinga 2012-01-19 21:06:47 -05:00
parent 320c59b387
commit 23b96d3406
6 changed files with 13 additions and 11 deletions

View file

@ -65,8 +65,10 @@ typedef enum
SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */
SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware
acceleration */ acceleration */
SDL_RENDERER_PRESENTVSYNC = 0x00000004 /**< Present is synchronized SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized
with the refresh rate */ with the refresh rate */
SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports
rendering to texture */
} SDL_RendererFlags; } SDL_RendererFlags;
/** /**

View file

@ -1153,10 +1153,10 @@ SDL_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect,
SDL_bool SDL_bool
SDL_RenderTargetSupported(SDL_Renderer *renderer) SDL_RenderTargetSupported(SDL_Renderer *renderer)
{ {
if ((!renderer) || (!renderer->SetTargetTexture)) { if (!renderer || !renderer->SetTargetTexture) {
return SDL_FALSE; return SDL_FALSE;
} }
return SDL_TRUE; return (renderer->info.flags & SDL_RENDERER_TARGETTEXTURE) != 0;
} }
int int

View file

@ -122,7 +122,7 @@ SDL_RenderDriver D3D_RenderDriver = {
D3D_CreateRenderer, D3D_CreateRenderer,
{ {
"direct3d", "direct3d",
(SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC), (SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE),
1, 1,
{SDL_PIXELFORMAT_ARGB8888}, {SDL_PIXELFORMAT_ARGB8888},
0, 0,
@ -406,7 +406,7 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->info = D3D_RenderDriver.info; renderer->info = D3D_RenderDriver.info;
renderer->driverdata = data; renderer->driverdata = data;
renderer->info.flags = SDL_RENDERER_ACCELERATED; renderer->info.flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE;
SDL_VERSION(&windowinfo.version); SDL_VERSION(&windowinfo.version);
SDL_GetWindowWMInfo(window, &windowinfo); SDL_GetWindowWMInfo(window, &windowinfo);

View file

@ -76,7 +76,7 @@ SDL_RenderDriver GL_RenderDriver = {
GL_CreateRenderer, GL_CreateRenderer,
{ {
"opengl", "opengl",
(SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC), (SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE),
1, 1,
{SDL_PIXELFORMAT_ARGB8888}, {SDL_PIXELFORMAT_ARGB8888},
0, 0,
@ -321,7 +321,7 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->DestroyTexture = GL_DestroyTexture; renderer->DestroyTexture = GL_DestroyTexture;
renderer->DestroyRenderer = GL_DestroyRenderer; renderer->DestroyRenderer = GL_DestroyRenderer;
renderer->info = GL_RenderDriver.info; renderer->info = GL_RenderDriver.info;
renderer->info.flags = SDL_RENDERER_ACCELERATED; renderer->info.flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE;
renderer->driverdata = data; renderer->driverdata = data;
renderer->window = window; renderer->window = window;

View file

@ -89,7 +89,7 @@ SDL_RenderDriver GLES_RenderDriver = {
GLES_CreateRenderer, GLES_CreateRenderer,
{ {
"opengles", "opengles",
(SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC), (SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE),
1, 1,
{SDL_PIXELFORMAT_ABGR8888}, {SDL_PIXELFORMAT_ABGR8888},
0, 0,
@ -372,7 +372,7 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->DestroyTexture = GLES_DestroyTexture; renderer->DestroyTexture = GLES_DestroyTexture;
renderer->DestroyRenderer = GLES_DestroyRenderer; renderer->DestroyRenderer = GLES_DestroyRenderer;
renderer->info = GLES_RenderDriver.info; renderer->info = GLES_RenderDriver.info;
renderer->info.flags = SDL_RENDERER_ACCELERATED; renderer->info.flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE;
renderer->driverdata = data; renderer->driverdata = data;
renderer->window = window; renderer->window = window;
renderer->SetTargetTexture = GLES_SetTargetTexture; renderer->SetTargetTexture = GLES_SetTargetTexture;

View file

@ -40,7 +40,7 @@ SDL_RenderDriver GLES2_RenderDriver = {
GLES2_CreateRenderer, GLES2_CreateRenderer,
{ {
"opengles2", "opengles2",
(SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC), (SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE),
4, 4,
{SDL_PIXELFORMAT_ABGR8888, {SDL_PIXELFORMAT_ABGR8888,
SDL_PIXELFORMAT_ARGB8888, SDL_PIXELFORMAT_ARGB8888,
@ -1447,7 +1447,7 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags)
return NULL; return NULL;
} }
renderer->info = GLES2_RenderDriver.info; renderer->info = GLES2_RenderDriver.info;
renderer->info.flags = SDL_RENDERER_ACCELERATED; renderer->info.flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE;
renderer->driverdata = rdata; renderer->driverdata = rdata;
renderer->window = window; renderer->window = window;