mirror of https://github.com/encounter/SDL.git
Added SDL_RenderGetD3D11Device() to get access to the device associated with the D3D11 renderer
This commit is contained in:
parent
5f0b2a7f54
commit
223af86c62
|
@ -59,12 +59,20 @@ extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
|
||||||
|
|
||||||
typedef struct IDirect3DDevice9 IDirect3DDevice9;
|
typedef struct IDirect3DDevice9 IDirect3DDevice9;
|
||||||
/**
|
/**
|
||||||
\brief Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer.
|
\brief Returns the D3D9 device associated with a renderer, or NULL if it's not a D3D9 renderer.
|
||||||
|
|
||||||
Once you are done using the device, you should release it to avoid a resource leak.
|
Once you are done using the device, you should release it to avoid a resource leak.
|
||||||
*/
|
*/
|
||||||
extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
|
extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
|
||||||
|
|
||||||
|
typedef struct ID3D11Device ID3D11Device;
|
||||||
|
/**
|
||||||
|
\brief Returns the D3D11 device associated with a renderer, or NULL if it's not a D3D11 renderer.
|
||||||
|
|
||||||
|
Once you are done using the device, you should release it to avoid a resource leak.
|
||||||
|
*/
|
||||||
|
extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Returns the DXGI Adapter and Output indices for the specified display index.
|
\brief Returns the DXGI Adapter and Output indices for the specified display index.
|
||||||
|
|
||||||
|
|
|
@ -793,3 +793,4 @@
|
||||||
#define SDL_lround SDL_lround_REAL
|
#define SDL_lround SDL_lround_REAL
|
||||||
#define SDL_lroundf SDL_lroundf_REAL
|
#define SDL_lroundf SDL_lroundf_REAL
|
||||||
#define SDL_SoftStretchLinear SDL_SoftStretchLinear_REAL
|
#define SDL_SoftStretchLinear SDL_SoftStretchLinear_REAL
|
||||||
|
#define SDL_RenderGetD3D11Device SDL_RenderGetD3D11Device_REAL
|
||||||
|
|
|
@ -854,3 +854,6 @@ SDL_DYNAPI_PROC(float,SDL_roundf,(float a),(a),return)
|
||||||
SDL_DYNAPI_PROC(long,SDL_lround,(double a),(a),return)
|
SDL_DYNAPI_PROC(long,SDL_lround,(double a),(a),return)
|
||||||
SDL_DYNAPI_PROC(long,SDL_lroundf,(float a),(a),return)
|
SDL_DYNAPI_PROC(long,SDL_lroundf,(float a),(a),return)
|
||||||
SDL_DYNAPI_PROC(int,SDL_SoftStretchLinear,(SDL_Surface *a, const SDL_Rect *b, SDL_Surface *c, const SDL_Rect *d),(a,b,c,d),return)
|
SDL_DYNAPI_PROC(int,SDL_SoftStretchLinear,(SDL_Surface *a, const SDL_Rect *b, SDL_Surface *c, const SDL_Rect *d),(a,b,c,d),return)
|
||||||
|
#ifdef __WIN32__
|
||||||
|
SDL_DYNAPI_PROC(ID3D11Device*,SDL_RenderGetD3D11Device,(SDL_Renderer *a),(a),return)
|
||||||
|
#endif
|
||||||
|
|
|
@ -20,6 +20,9 @@
|
||||||
*/
|
*/
|
||||||
#include "../../SDL_internal.h"
|
#include "../../SDL_internal.h"
|
||||||
|
|
||||||
|
#include "SDL_render.h"
|
||||||
|
#include "SDL_system.h"
|
||||||
|
|
||||||
#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
|
#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
|
||||||
|
|
||||||
#define COBJMACROS
|
#define COBJMACROS
|
||||||
|
@ -2595,4 +2598,30 @@ SDL_RenderDriver D3D11_RenderDriver = {
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
|
#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: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
|
|
Loading…
Reference in New Issue