diff options
author | Sam Lantinga <slouken@libsdl.org> | 2021-01-01 11:12:30 -0800 |
---|---|---|
committer | Sam Lantinga <slouken@libsdl.org> | 2021-01-01 11:12:30 -0800 |
commit | e3e825c1353137a038eddca0c5697ae0297c64fd (patch) | |
tree | b6d37c9bf4ab0f8fbec80c2d90234c6306662c5f /src/render | |
parent | bec624ca0ea13f33e29bcb0ae464d5bb281e7132 (diff) | |
download | sdl-e3e825c1353137a038eddca0c5697ae0297c64fd.tar.gz |
Added SDL_RenderGetD3D11Device() to get access to the device associated with the D3D11 renderer
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/direct3d11/SDL_render_d3d11.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c index 3ceb1a83f..060c74c41 100644 --- a/src/render/direct3d11/SDL_render_d3d11.c +++ b/src/render/direct3d11/SDL_render_d3d11.c @@ -20,6 +20,9 @@ */ #include "../../SDL_internal.h" +#include "SDL_render.h" +#include "SDL_system.h" + #if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED #define COBJMACROS @@ -2595,4 +2598,30 @@ SDL_RenderDriver D3D11_RenderDriver = { #endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */ +#ifdef __WIN32__ +/* This function needs to always exist on Windows, for the Dynamic API. */ +ID3D11Device * +SDL_RenderGetD3D11Device(SDL_Renderer * renderer) +{ + ID3D11Device *device = NULL; + +#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED + D3D11_RenderData *data = (D3D11_RenderData *) renderer->driverdata; + + /* Make sure that this is a D3D renderer */ + if (renderer->DestroyRenderer != D3D11_DestroyRenderer) { + SDL_SetError("Renderer is not a D3D11 renderer"); + return NULL; + } + + device = (ID3D11Device *)data->d3dDevice; + if (device) { + ID3D11Device_AddRef(device); + } +#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */ + + return device; +} +#endif /* __WIN32__ */ + /* vi: set ts=4 sw=4 expandtab: */ |