author | David Ludwig <dludwig@pobox.com> |
Sat, 09 Feb 2013 11:42:17 -0500 | |
changeset 8410 | ba725b3a0c87 |
parent 8401 | 29ecd2eca4af |
child 8412 | 59f1191a5cca |
permissions | -rw-r--r-- |
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
1 |
/* |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
2 |
Simple DirectMedia Layer |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
3 |
Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org> |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
4 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
5 |
This software is provided 'as-is', without any express or implied |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
6 |
warranty. In no event will the authors be held liable for any damages |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
7 |
arising from the use of this software. |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
8 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
9 |
Permission is granted to anyone to use this software for any purpose, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
10 |
including commercial applications, and to alter it and redistribute it |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
11 |
freely, subject to the following restrictions: |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
12 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
13 |
1. The origin of this software must not be misrepresented; you must not |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
14 |
claim that you wrote the original software. If you use this software |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
15 |
in a product, an acknowledgment in the product documentation would be |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
16 |
appreciated but is not required. |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
17 |
2. Altered source versions must be plainly marked as such, and must not be |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
18 |
misrepresented as being the original software. |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
19 |
3. This notice may not be removed or altered from any source distribution. |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
20 |
*/ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
21 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
22 |
#include "SDL_config.h" |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
23 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
24 |
#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
25 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
26 |
extern "C" { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
27 |
#include "../../core/windows/SDL_windows.h" |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
28 |
//#include "SDL_hints.h" |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
29 |
//#include "SDL_loadso.h" |
8410
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
30 |
#include "SDL_system.h" |
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
31 |
#include "SDL_syswm.h" |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
32 |
#include "../SDL_sysrender.h" |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
33 |
//#include "stdio.h" |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
34 |
} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
35 |
|
8410
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
36 |
#include <fstream> |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
37 |
#include <string> |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
38 |
#include <vector> |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
39 |
|
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
40 |
#include "SDL_render_d3d11_cpp.h" |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
41 |
|
8410
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
42 |
using namespace DirectX; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
43 |
using namespace Microsoft::WRL; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
44 |
using namespace std; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
45 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
46 |
/* Direct3D 11.1 renderer implementation */ |
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
47 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
48 |
static SDL_Renderer *D3D11_CreateRenderer(SDL_Window * window, Uint32 flags); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
49 |
//static void D3D11_WindowEvent(SDL_Renderer * renderer, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
50 |
// const SDL_WindowEvent *event); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
51 |
//static int D3D11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
52 |
//static int D3D11_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
53 |
// const SDL_Rect * rect, const void *pixels, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
54 |
// int pitch); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
55 |
//static int D3D11_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
56 |
// const SDL_Rect * rect, void **pixels, int *pitch); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
57 |
//static void D3D11_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
58 |
//static int D3D11_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
59 |
static int D3D11_UpdateViewport(SDL_Renderer * renderer); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
60 |
//static int D3D11_RenderClear(SDL_Renderer * renderer); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
61 |
//static int D3D11_RenderDrawPoints(SDL_Renderer * renderer, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
62 |
// const SDL_FPoint * points, int count); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
63 |
//static int D3D11_RenderDrawLines(SDL_Renderer * renderer, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
64 |
// const SDL_FPoint * points, int count); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
65 |
//static int D3D11_RenderFillRects(SDL_Renderer * renderer, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
66 |
// const SDL_FRect * rects, int count); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
67 |
//static int D3D11_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
68 |
// const SDL_Rect * srcrect, const SDL_FRect * dstrect); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
69 |
//static int D3D11_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
70 |
// const SDL_Rect * srcrect, const SDL_FRect * dstrect, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
71 |
// const double angle, const SDL_FPoint * center, const SDL_RendererFlip flip); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
72 |
//static int D3D11_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
73 |
// Uint32 format, void * pixels, int pitch); |
8401
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
74 |
static void D3D11_RenderPresent(SDL_Renderer * renderer); |
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
75 |
//static void D3D11_DestroyTexture(SDL_Renderer * renderer, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
76 |
// SDL_Texture * texture); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
77 |
//static void D3D11_DestroyRenderer(SDL_Renderer * renderer); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
78 |
|
8410
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
79 |
/* Direct3D 11.1 Internal Functions */ |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
80 |
HRESULT WINRT_CreateDeviceResources(SDL_Renderer * renderer); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
81 |
|
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
82 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
83 |
extern "C" { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
84 |
SDL_RenderDriver D3D11_RenderDriver = { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
85 |
D3D11_CreateRenderer, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
86 |
{ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
87 |
"direct3d", |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
88 |
(SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE), |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
89 |
1, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
90 |
{SDL_PIXELFORMAT_ARGB8888}, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
91 |
0, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
92 |
0} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
93 |
}; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
94 |
} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
95 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
96 |
//typedef struct |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
97 |
//{ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
98 |
// float x, y, z; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
99 |
// DWORD color; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
100 |
// float u, v; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
101 |
//} Vertex; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
102 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
103 |
SDL_Renderer * |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
104 |
D3D11_CreateRenderer(SDL_Window * window, Uint32 flags) |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
105 |
{ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
106 |
SDL_Renderer *renderer; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
107 |
D3D11_RenderData *data; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
108 |
// SDL_SysWMinfo windowinfo; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
109 |
// HRESULT result; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
110 |
// D3DPRESENT_PARAMETERS pparams; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
111 |
// IDirect3DSwapChain9 *chain; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
112 |
// D3DCAPS9 caps; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
113 |
// Uint32 window_flags; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
114 |
// int w, h; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
115 |
// SDL_DisplayMode fullscreen_mode; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
116 |
// D3DMATRIX matrix; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
117 |
// int d3dxVersion; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
118 |
//char d3dxDLLFile[50]; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
119 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
120 |
renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(*renderer)); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
121 |
if (!renderer) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
122 |
SDL_OutOfMemory(); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
123 |
return NULL; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
124 |
} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
125 |
SDL_zerop(renderer); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
126 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
127 |
data = new D3D11_RenderData; // Use the C++ 'new' operator to make sure the struct's members initialize using C++ rules |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
128 |
if (!data) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
129 |
SDL_OutOfMemory(); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
130 |
return NULL; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
131 |
} |
8410
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
132 |
data->featureLevel = (D3D_FEATURE_LEVEL) 0; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
133 |
data->vertexCount = 0; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
134 |
data->loadingComplete = false; |
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
135 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
136 |
// TODO: Create Direct3D Object(s) |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
137 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
138 |
//renderer->WindowEvent = D3D11_WindowEvent; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
139 |
//renderer->CreateTexture = D3D11_CreateTexture; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
140 |
//renderer->UpdateTexture = D3D11_UpdateTexture; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
141 |
//renderer->LockTexture = D3D11_LockTexture; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
142 |
//renderer->UnlockTexture = D3D11_UnlockTexture; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
143 |
//renderer->SetRenderTarget = D3D11_SetRenderTarget; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
144 |
renderer->UpdateViewport = D3D11_UpdateViewport; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
145 |
//renderer->RenderClear = D3D11_RenderClear; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
146 |
//renderer->RenderDrawPoints = D3D11_RenderDrawPoints; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
147 |
//renderer->RenderDrawLines = D3D11_RenderDrawLines; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
148 |
//renderer->RenderFillRects = D3D11_RenderFillRects; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
149 |
//renderer->RenderCopy = D3D11_RenderCopy; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
150 |
//renderer->RenderCopyEx = D3D11_RenderCopyEx; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
151 |
//renderer->RenderReadPixels = D3D11_RenderReadPixels; |
8401
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
152 |
renderer->RenderPresent = D3D11_RenderPresent; |
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
153 |
//renderer->DestroyTexture = D3D11_DestroyTexture; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
154 |
//renderer->DestroyRenderer = D3D11_DestroyRenderer; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
155 |
renderer->info = D3D11_RenderDriver.info; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
156 |
renderer->driverdata = data; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
157 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
158 |
renderer->info.flags = SDL_RENDERER_ACCELERATED; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
159 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
160 |
//SDL_VERSION(&windowinfo.version); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
161 |
//SDL_GetWindowWMInfo(window, &windowinfo); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
162 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
163 |
//window_flags = SDL_GetWindowFlags(window); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
164 |
//SDL_GetWindowSize(window, &w, &h); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
165 |
//SDL_GetWindowDisplayMode(window, &fullscreen_mode); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
166 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
167 |
//SDL_zero(pparams); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
168 |
//pparams.hDeviceWindow = windowinfo.info.win.window; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
169 |
//pparams.BackBufferWidth = w; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
170 |
//pparams.BackBufferHeight = h; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
171 |
//if (window_flags & SDL_WINDOW_FULLSCREEN) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
172 |
// pparams.BackBufferFormat = |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
173 |
// PixelFormatToD3DFMT(fullscreen_mode.format); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
174 |
//} else { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
175 |
// pparams.BackBufferFormat = D3DFMT_UNKNOWN; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
176 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
177 |
//pparams.BackBufferCount = 1; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
178 |
//pparams.SwapEffect = D3DSWAPEFFECT_DISCARD; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
179 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
180 |
//if (window_flags & SDL_WINDOW_FULLSCREEN) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
181 |
// pparams.Windowed = FALSE; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
182 |
// pparams.FullScreen_RefreshRateInHz = |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
183 |
// fullscreen_mode.refresh_rate; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
184 |
//} else { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
185 |
// pparams.Windowed = TRUE; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
186 |
// pparams.FullScreen_RefreshRateInHz = 0; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
187 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
188 |
//if (flags & SDL_RENDERER_PRESENTVSYNC) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
189 |
// pparams.PresentationInterval = D3DPRESENT_INTERVAL_ONE; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
190 |
//} else { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
191 |
// pparams.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
192 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
193 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
194 |
///* FIXME: Which adapter? */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
195 |
//data->adapter = D3DADAPTER_DEFAULT; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
196 |
//IDirect3D9_GetDeviceCaps(data->d3d, data->adapter, D3DDEVTYPE_HAL, &caps); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
197 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
198 |
//result = IDirect3D9_CreateDevice(data->d3d, data->adapter, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
199 |
// D3DDEVTYPE_HAL, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
200 |
// pparams.hDeviceWindow, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
201 |
// D3DCREATE_FPU_PRESERVE | ((caps. |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
202 |
// DevCaps & |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
203 |
// D3DDEVCAPS_HWTRANSFORMANDLIGHT) ? |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
204 |
// D3DCREATE_HARDWARE_VERTEXPROCESSING : |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
205 |
// D3DCREATE_SOFTWARE_VERTEXPROCESSING), |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
206 |
// &pparams, &data->device); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
207 |
//if (FAILED(result)) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
208 |
// D3D11_DestroyRenderer(renderer); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
209 |
// D3D11_SetError("CreateDevice()", result); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
210 |
// return NULL; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
211 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
212 |
//data->beginScene = SDL_TRUE; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
213 |
//data->scaleMode = D3DTEXF_FORCE_DWORD; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
214 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
215 |
///* Get presentation parameters to fill info */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
216 |
//result = IDirect3DDevice9_GetSwapChain(data->device, 0, &chain); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
217 |
//if (FAILED(result)) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
218 |
// D3D11_DestroyRenderer(renderer); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
219 |
// D3D11_SetError("GetSwapChain()", result); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
220 |
// return NULL; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
221 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
222 |
//result = IDirect3DSwapChain9_GetPresentParameters(chain, &pparams); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
223 |
//if (FAILED(result)) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
224 |
// IDirect3DSwapChain9_Release(chain); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
225 |
// D3D11_DestroyRenderer(renderer); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
226 |
// D3D11_SetError("GetPresentParameters()", result); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
227 |
// return NULL; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
228 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
229 |
//IDirect3DSwapChain9_Release(chain); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
230 |
//if (pparams.PresentationInterval == D3DPRESENT_INTERVAL_ONE) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
231 |
// renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
232 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
233 |
//data->pparams = pparams; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
234 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
235 |
//IDirect3DDevice9_GetDeviceCaps(data->device, &caps); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
236 |
//renderer->info.max_texture_width = caps.MaxTextureWidth; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
237 |
//renderer->info.max_texture_height = caps.MaxTextureHeight; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
238 |
//if (caps.NumSimultaneousRTs >= 2) { |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
239 |
// renderer->info.flags |= SDL_RENDERER_TARGETTEXTURE; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
240 |
//} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
241 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
242 |
///* Set up parameters for rendering */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
243 |
//IDirect3DDevice9_SetVertexShader(data->device, NULL); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
244 |
//IDirect3DDevice9_SetFVF(data->device, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
245 |
// D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
246 |
//IDirect3DDevice9_SetRenderState(data->device, D3DRS_ZENABLE, D3DZB_FALSE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
247 |
//IDirect3DDevice9_SetRenderState(data->device, D3DRS_CULLMODE, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
248 |
// D3DCULL_NONE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
249 |
//IDirect3DDevice9_SetRenderState(data->device, D3DRS_LIGHTING, FALSE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
250 |
///* Enable color modulation by diffuse color */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
251 |
//IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLOROP, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
252 |
// D3DTOP_MODULATE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
253 |
//IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLORARG1, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
254 |
// D3DTA_TEXTURE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
255 |
//IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLORARG2, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
256 |
// D3DTA_DIFFUSE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
257 |
///* Enable alpha modulation by diffuse alpha */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
258 |
//IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAOP, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
259 |
// D3DTOP_MODULATE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
260 |
//IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAARG1, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
261 |
// D3DTA_TEXTURE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
262 |
//IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAARG2, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
263 |
// D3DTA_DIFFUSE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
264 |
///* Disable second texture stage, since we're done */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
265 |
//IDirect3DDevice9_SetTextureStageState(data->device, 1, D3DTSS_COLOROP, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
266 |
// D3DTOP_DISABLE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
267 |
//IDirect3DDevice9_SetTextureStageState(data->device, 1, D3DTSS_ALPHAOP, |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
268 |
// D3DTOP_DISABLE); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
269 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
270 |
///* Store the default render target */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
271 |
//IDirect3DDevice9_GetRenderTarget(data->device, 0, &data->defaultRenderTarget ); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
272 |
//data->currentRenderTarget = NULL; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
273 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
274 |
///* Set an identity world and view matrix */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
275 |
//matrix.m[0][0] = 1.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
276 |
//matrix.m[0][1] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
277 |
//matrix.m[0][2] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
278 |
//matrix.m[0][3] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
279 |
//matrix.m[1][0] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
280 |
//matrix.m[1][1] = 1.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
281 |
//matrix.m[1][2] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
282 |
//matrix.m[1][3] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
283 |
//matrix.m[2][0] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
284 |
//matrix.m[2][1] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
285 |
//matrix.m[2][2] = 1.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
286 |
//matrix.m[2][3] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
287 |
//matrix.m[3][0] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
288 |
//matrix.m[3][1] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
289 |
//matrix.m[3][2] = 0.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
290 |
//matrix.m[3][3] = 1.0f; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
291 |
//IDirect3DDevice9_SetTransform(data->device, D3DTS_WORLD, &matrix); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
292 |
//IDirect3DDevice9_SetTransform(data->device, D3DTS_VIEW, &matrix); |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
293 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
294 |
return renderer; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
295 |
} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
296 |
|
8410
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
297 |
static bool |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
298 |
D3D11_ReadFileContents(const wstring & fileName, vector<char> & out) |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
299 |
{ |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
300 |
ifstream in(fileName, ios::in | ios::binary); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
301 |
if (!in) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
302 |
return false; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
303 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
304 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
305 |
in.seekg(0, ios::end); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
306 |
out.resize((size_t) in.tellg()); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
307 |
in.seekg(0, ios::beg); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
308 |
in.read(&out[0], out.size()); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
309 |
return in.good(); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
310 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
311 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
312 |
static bool |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
313 |
D3D11_ReadShaderContents(const wstring & shaderName, vector<char> & out) |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
314 |
{ |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
315 |
wstring fileName; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
316 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
317 |
#if WINAPI_FAMILY == WINAPI_FAMILY_APP |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
318 |
fileName = SDL_WinRTGetInstalledLocationPath(); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
319 |
fileName += L"\\SDL_VS2012_WinRT\\"; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
320 |
#elif WINAPI_FAMILY == WINAPI_PHONE_APP |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
321 |
fileName = SDL_WinRTGetInstalledLocationPath(); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
322 |
fileName += L"\\"; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
323 |
#endif |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
324 |
// WinRT, TODO: test Direct3D 11.1 shader loading on Win32 |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
325 |
fileName += shaderName; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
326 |
return D3D11_ReadFileContents(fileName, out); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
327 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
328 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
329 |
HRESULT |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
330 |
WINRT_CreateDeviceResources(SDL_Renderer * renderer) |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
331 |
{ |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
332 |
D3D11_RenderData *data = (D3D11_RenderData *) renderer->driverdata; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
333 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
334 |
// This flag adds support for surfaces with a different color channel ordering |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
335 |
// than the API default. It is required for compatibility with Direct2D. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
336 |
UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
337 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
338 |
#if defined(_DEBUG) |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
339 |
// If the project is in a debug build, enable debugging via SDK Layers with this flag. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
340 |
creationFlags |= D3D11_CREATE_DEVICE_DEBUG; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
341 |
#endif |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
342 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
343 |
// This array defines the set of DirectX hardware feature levels this app will support. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
344 |
// Note the ordering should be preserved. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
345 |
// Don't forget to declare your application's minimum required feature level in its |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
346 |
// description. All applications are assumed to support 9.1 unless otherwise stated. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
347 |
D3D_FEATURE_LEVEL featureLevels[] = |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
348 |
{ |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
349 |
D3D_FEATURE_LEVEL_11_1, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
350 |
D3D_FEATURE_LEVEL_11_0, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
351 |
D3D_FEATURE_LEVEL_10_1, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
352 |
D3D_FEATURE_LEVEL_10_0, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
353 |
D3D_FEATURE_LEVEL_9_3, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
354 |
D3D_FEATURE_LEVEL_9_2, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
355 |
D3D_FEATURE_LEVEL_9_1 |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
356 |
}; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
357 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
358 |
// Create the Direct3D 11 API device object and a corresponding context. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
359 |
ComPtr<ID3D11Device> device; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
360 |
ComPtr<ID3D11DeviceContext> context; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
361 |
HRESULT result = S_OK; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
362 |
result = D3D11CreateDevice( |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
363 |
nullptr, // Specify nullptr to use the default adapter. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
364 |
D3D_DRIVER_TYPE_HARDWARE, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
365 |
nullptr, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
366 |
creationFlags, // Set set debug and Direct2D compatibility flags. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
367 |
featureLevels, // List of feature levels this app can support. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
368 |
ARRAYSIZE(featureLevels), |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
369 |
D3D11_SDK_VERSION, // Always set this to D3D11_SDK_VERSION for Windows Store apps. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
370 |
&device, // Returns the Direct3D device created. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
371 |
&data->featureLevel, // Returns feature level of device created. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
372 |
&context // Returns the device immediate context. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
373 |
); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
374 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
375 |
WIN_SetErrorFromHRESULT(__FUNCTION__, result); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
376 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
377 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
378 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
379 |
// Get the Direct3D 11.1 API device and context interfaces. |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
380 |
Microsoft::WRL::ComPtr<ID3D11Device1> d3dDevice1; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
381 |
result = device.As(&(data->d3dDevice)); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
382 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
383 |
WIN_SetErrorFromHRESULT(__FUNCTION__, result); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
384 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
385 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
386 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
387 |
result = context.As(&data->d3dContext); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
388 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
389 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
390 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
391 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
392 |
// Start loading GPU shaders: |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
393 |
vector<char> fileData; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
394 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
395 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
396 |
// Load in SDL's one and only vertex shader: |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
397 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
398 |
if (!D3D11_ReadShaderContents(L"SimpleVertexShader.cso", fileData)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
399 |
SDL_SetError("Unable to open SDL's vertex shader file."); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
400 |
return E_FAIL; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
401 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
402 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
403 |
result = data->d3dDevice->CreateVertexShader( |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
404 |
&fileData[0], |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
405 |
fileData.size(), |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
406 |
nullptr, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
407 |
&data->vertexShader |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
408 |
); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
409 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
410 |
WIN_SetErrorFromHRESULT(__FUNCTION__, result); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
411 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
412 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
413 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
414 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
415 |
// Create an input layout for SDL's vertex shader: |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
416 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
417 |
const D3D11_INPUT_ELEMENT_DESC vertexDesc[] = |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
418 |
{ |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
419 |
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
420 |
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
421 |
}; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
422 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
423 |
result = data->d3dDevice->CreateInputLayout( |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
424 |
vertexDesc, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
425 |
ARRAYSIZE(vertexDesc), |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
426 |
&fileData[0], |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
427 |
fileData.size(), |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
428 |
&data->inputLayout |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
429 |
); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
430 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
431 |
WIN_SetErrorFromHRESULT(__FUNCTION__, result); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
432 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
433 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
434 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
435 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
436 |
// Load in SDL's one and only pixel shader (for now, more are likely to follow): |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
437 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
438 |
if (!D3D11_ReadShaderContents(L"SimplePixelShader.cso", fileData)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
439 |
SDL_SetError("Unable to open SDL's pixel shader file."); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
440 |
return E_FAIL; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
441 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
442 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
443 |
result = data->d3dDevice->CreatePixelShader( |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
444 |
&fileData[0], |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
445 |
fileData.size(), |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
446 |
nullptr, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
447 |
&data->pixelShader |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
448 |
); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
449 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
450 |
WIN_SetErrorFromHRESULT(__FUNCTION__, result); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
451 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
452 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
453 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
454 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
455 |
// Create a vertex buffer: |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
456 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
457 |
VertexPositionColor vertices[] = |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
458 |
{ |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
459 |
{XMFLOAT3(-1.0f, -1.0f, 0.0f), XMFLOAT2(0.0f, 1.0f)}, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
460 |
{XMFLOAT3(-1.0f, 1.0f, 0.0f), XMFLOAT2(0.0f, 0.0f)}, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
461 |
{XMFLOAT3(1.0f, -1.0f, 0.0f), XMFLOAT2(1.0f, 1.0f)}, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
462 |
{XMFLOAT3(1.0f, 1.0f, 0.0f), XMFLOAT2(1.0f, 0.0f)}, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
463 |
}; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
464 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
465 |
data->vertexCount = ARRAYSIZE(vertices); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
466 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
467 |
D3D11_SUBRESOURCE_DATA vertexBufferData = {0}; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
468 |
vertexBufferData.pSysMem = vertices; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
469 |
vertexBufferData.SysMemPitch = 0; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
470 |
vertexBufferData.SysMemSlicePitch = 0; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
471 |
CD3D11_BUFFER_DESC vertexBufferDesc(sizeof(vertices), D3D11_BIND_VERTEX_BUFFER); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
472 |
result = data->d3dDevice->CreateBuffer( |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
473 |
&vertexBufferDesc, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
474 |
&vertexBufferData, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
475 |
&data->vertexBuffer |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
476 |
); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
477 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
478 |
WIN_SetErrorFromHRESULT(__FUNCTION__, result); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
479 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
480 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
481 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
482 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
483 |
// Create a sampler to use when drawing textures: |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
484 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
485 |
D3D11_SAMPLER_DESC samplerDesc; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
486 |
samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
487 |
samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_CLAMP; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
488 |
samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_CLAMP; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
489 |
samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_CLAMP; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
490 |
samplerDesc.MipLODBias = 0.0f; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
491 |
samplerDesc.MaxAnisotropy = 1; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
492 |
samplerDesc.ComparisonFunc = D3D11_COMPARISON_ALWAYS; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
493 |
samplerDesc.BorderColor[0] = 0.0f; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
494 |
samplerDesc.BorderColor[1] = 0.0f; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
495 |
samplerDesc.BorderColor[2] = 0.0f; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
496 |
samplerDesc.BorderColor[3] = 0.0f; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
497 |
samplerDesc.MinLOD = 0.0f; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
498 |
samplerDesc.MaxLOD = D3D11_FLOAT32_MAX; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
499 |
result = data->d3dDevice->CreateSamplerState( |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
500 |
&samplerDesc, |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
501 |
&data->mainSampler |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
502 |
); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
503 |
if (FAILED(result)) { |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
504 |
WIN_SetErrorFromHRESULT(__FUNCTION__, result); |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
505 |
return result; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
506 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
507 |
|
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
508 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
509 |
// All done! |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
510 |
// |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
511 |
data->loadingComplete = true; // This variable can probably be factored-out |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
512 |
return S_OK; |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
513 |
} |
ba725b3a0c87
WinRT: more code-moving from SDL_winrtrenderer* to SDL_render_d3d11*
David Ludwig <dludwig@pobox.com>
parents:
8401
diff
changeset
|
514 |
|
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
515 |
static int |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
516 |
D3D11_UpdateViewport(SDL_Renderer * renderer) |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
517 |
{ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
518 |
return 0; |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
519 |
} |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
520 |
|
8401
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
521 |
static void |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
522 |
D3D11_RenderPresent(SDL_Renderer * renderer) |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
523 |
{ |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
524 |
D3D11_RenderData *data = (D3D11_RenderData *) renderer->driverdata; |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
525 |
|
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
526 |
#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
527 |
// The first argument instructs DXGI to block until VSync, putting the application |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
528 |
// to sleep until the next VSync. This ensures we don't waste any cycles rendering |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
529 |
// frames that will never be displayed to the screen. |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
530 |
HRESULT hr = data->swapChain->Present(1, 0); |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
531 |
#else |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
532 |
// The application may optionally specify "dirty" or "scroll" |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
533 |
// rects to improve efficiency in certain scenarios. |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
534 |
// This option is not available on Windows Phone 8, to note. |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
535 |
DXGI_PRESENT_PARAMETERS parameters = {0}; |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
536 |
parameters.DirtyRectsCount = 0; |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
537 |
parameters.pDirtyRects = nullptr; |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
538 |
parameters.pScrollRect = nullptr; |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
539 |
parameters.pScrollOffset = nullptr; |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
540 |
|
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
541 |
// The first argument instructs DXGI to block until VSync, putting the application |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
542 |
// to sleep until the next VSync. This ensures we don't waste any cycles rendering |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
543 |
// frames that will never be displayed to the screen. |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
544 |
HRESULT hr = data->swapChain->Present1(1, 0, ¶meters); |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
545 |
#endif |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
546 |
|
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
547 |
// Discard the contents of the render target. |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
548 |
// This is a valid operation only when the existing contents will be entirely |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
549 |
// overwritten. If dirty or scroll rects are used, this call should be removed. |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
550 |
data->d3dContext->DiscardView(data->renderTargetView.Get()); |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
551 |
|
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
552 |
// If the device was removed either by a disconnect or a driver upgrade, we |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
553 |
// must recreate all device resources. |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
554 |
if (hr == DXGI_ERROR_DEVICE_REMOVED) |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
555 |
{ |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
556 |
extern void WINRT_HandleDeviceLost(); // TODO, WinRT: move lost-device handling into the Direct3D 11.1 renderer, as appropriate |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
557 |
WINRT_HandleDeviceLost(); |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
558 |
} |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
559 |
else |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
560 |
{ |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
561 |
WIN_SetErrorFromHRESULT(__FUNCTION__, hr); |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
562 |
// TODO, WinRT: consider throwing an exception if D3D11_RenderPresent fails, especially if there is a way to salvedge debug info from users' machines |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
563 |
} |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
564 |
} |
29ecd2eca4af
WinRT: moved a bit more Direct3D 11.1 code into the SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
8400
diff
changeset
|
565 |
|
8400
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
566 |
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */ |
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
567 |
|
1315402d9028
WinRT: started refactoring Direct3D 11.1 code into a new SDL_Renderer backend
David Ludwig <dludwig@pobox.com>
parents:
diff
changeset
|
568 |
/* vi: set ts=4 sw=4 expandtab: */ |