Mercurial > sdl-ios-xcode
annotate src/video/win32/SDL_d3drender.c @ 3724:48e2b67bb2de gsoc2009_unit_tests
Use testsur as a parameter.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Sat, 11 Jul 2009 17:57:49 +0000 |
parents | 8cc00819c8d6 |
children | 434ce3242e1c |
rev | line source |
---|---|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
2859 | 3 Copyright (C) 1997-2009 Sam Lantinga |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 #include "SDL_config.h" |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 #if SDL_VIDEO_RENDER_D3D |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 #include "SDL_win32video.h" |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
27 #include "../SDL_yuv_sw_c.h" |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 /* Direct3D renderer implementation */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 |
2786 | 31 #if 1 /* This takes more memory but you won't lose your texture data */ |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
32 #define D3DPOOL_SDL D3DPOOL_MANAGED |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
33 #define SDL_MEMORY_POOL_MANAGED |
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
34 #else |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
35 #define D3DPOOL_SDL D3DPOOL_DEFAULT |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
36 #define SDL_MEMORY_POOL_DEFAULT |
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
37 #endif |
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
38 |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
39 static SDL_Renderer *D3D_CreateRenderer(SDL_Window * window, Uint32 flags); |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
40 static int D3D_DisplayModeChanged(SDL_Renderer * renderer); |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
41 static int D3D_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture); |
2990 | 42 static int D3D_QueryTexturePixels(SDL_Renderer * renderer, |
43 SDL_Texture * texture, void **pixels, | |
44 int *pitch); | |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
45 static int D3D_SetTexturePalette(SDL_Renderer * renderer, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
46 SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
47 const SDL_Color * colors, int firstcolor, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
48 int ncolors); |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
49 static int D3D_GetTexturePalette(SDL_Renderer * renderer, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
50 SDL_Texture * texture, SDL_Color * colors, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
51 int firstcolor, int ncolors); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
52 static int D3D_SetTextureColorMod(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
53 SDL_Texture * texture); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
54 static int D3D_SetTextureAlphaMod(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
55 SDL_Texture * texture); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
56 static int D3D_SetTextureBlendMode(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
57 SDL_Texture * texture); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
58 static int D3D_SetTextureScaleMode(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
59 SDL_Texture * texture); |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
60 static int D3D_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
61 const SDL_Rect * rect, const void *pixels, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
62 int pitch); |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
63 static int D3D_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
64 const SDL_Rect * rect, int markDirty, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
65 void **pixels, int *pitch); |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
66 static void D3D_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture); |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
67 static void D3D_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
68 int numrects, const SDL_Rect * rects); |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
69 static int D3D_RenderPoint(SDL_Renderer * renderer, int x, int y); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
70 static int D3D_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
71 int y2); |
2919
2f91a3847ae8
Fixed compiling Windows renderers. Lines and points will be implemented later.
Sam Lantinga <slouken@libsdl.org>
parents:
2884
diff
changeset
|
72 static int D3D_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect); |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
73 static int D3D_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
74 const SDL_Rect * srcrect, const SDL_Rect * dstrect); |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
75 static void D3D_RenderPresent(SDL_Renderer * renderer); |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
76 static void D3D_DestroyTexture(SDL_Renderer * renderer, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
77 SDL_Texture * texture); |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
78 static void D3D_DestroyRenderer(SDL_Renderer * renderer); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
81 SDL_RenderDriver D3D_RenderDriver = { |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
82 D3D_CreateRenderer, |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 "d3d", |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
85 (SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_PRESENTCOPY | |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
86 SDL_RENDERER_PRESENTFLIP2 | SDL_RENDERER_PRESENTFLIP3 | |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
87 SDL_RENDERER_PRESENTDISCARD | SDL_RENDERER_PRESENTVSYNC | |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
88 SDL_RENDERER_ACCELERATED), |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
89 (SDL_TEXTUREMODULATE_NONE | SDL_TEXTUREMODULATE_COLOR | |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
90 SDL_TEXTUREMODULATE_ALPHA), |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
91 (SDL_BLENDMODE_NONE | SDL_BLENDMODE_MASK | |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
92 SDL_BLENDMODE_BLEND | SDL_BLENDMODE_ADD | SDL_BLENDMODE_MOD), |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
93 (SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_FAST | |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
94 SDL_TEXTURESCALEMODE_SLOW | SDL_TEXTURESCALEMODE_BEST), |
2972
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
95 0, |
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
96 {0}, |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 0, |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 0} |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
99 }; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
101 typedef struct |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 { |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
103 IDirect3D9 *d3d; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
104 IDirect3DDevice9 *device; |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
105 D3DPRESENT_PARAMETERS pparams; |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
106 SDL_bool beginScene; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
107 } D3D_RenderData; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 typedef struct |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
110 { |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
111 SDL_SW_YUVTexture *yuv; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
112 Uint32 format; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
113 IDirect3DTexture9 *texture; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
114 } D3D_TextureData; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
115 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
116 typedef struct |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
117 { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
118 float x, y, z; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
119 float rhw; |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
120 DWORD color; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
121 float u, v; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
122 } Vertex; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
123 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
124 static void |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
125 D3D_SetError(const char *prefix, HRESULT result) |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
126 { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
127 const char *error; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
128 |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
129 switch (result) { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
130 case D3DERR_WRONGTEXTUREFORMAT: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
131 error = "WRONGTEXTUREFORMAT"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
132 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
133 case D3DERR_UNSUPPORTEDCOLOROPERATION: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
134 error = "UNSUPPORTEDCOLOROPERATION"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
135 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
136 case D3DERR_UNSUPPORTEDCOLORARG: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
137 error = "UNSUPPORTEDCOLORARG"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
138 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
139 case D3DERR_UNSUPPORTEDALPHAOPERATION: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
140 error = "UNSUPPORTEDALPHAOPERATION"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
141 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
142 case D3DERR_UNSUPPORTEDALPHAARG: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
143 error = "UNSUPPORTEDALPHAARG"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
144 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
145 case D3DERR_TOOMANYOPERATIONS: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
146 error = "TOOMANYOPERATIONS"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
147 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
148 case D3DERR_CONFLICTINGTEXTUREFILTER: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
149 error = "CONFLICTINGTEXTUREFILTER"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
150 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
151 case D3DERR_UNSUPPORTEDFACTORVALUE: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
152 error = "UNSUPPORTEDFACTORVALUE"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
153 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
154 case D3DERR_CONFLICTINGRENDERSTATE: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
155 error = "CONFLICTINGRENDERSTATE"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
156 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
157 case D3DERR_UNSUPPORTEDTEXTUREFILTER: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
158 error = "UNSUPPORTEDTEXTUREFILTER"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
159 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
160 case D3DERR_CONFLICTINGTEXTUREPALETTE: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
161 error = "CONFLICTINGTEXTUREPALETTE"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
162 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
163 case D3DERR_DRIVERINTERNALERROR: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
164 error = "DRIVERINTERNALERROR"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
165 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
166 case D3DERR_NOTFOUND: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
167 error = "NOTFOUND"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
168 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
169 case D3DERR_MOREDATA: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
170 error = "MOREDATA"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
171 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
172 case D3DERR_DEVICELOST: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
173 error = "DEVICELOST"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
174 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
175 case D3DERR_DEVICENOTRESET: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
176 error = "DEVICENOTRESET"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
177 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
178 case D3DERR_NOTAVAILABLE: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
179 error = "NOTAVAILABLE"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
180 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
181 case D3DERR_OUTOFVIDEOMEMORY: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
182 error = "OUTOFVIDEOMEMORY"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
183 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
184 case D3DERR_INVALIDDEVICE: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
185 error = "INVALIDDEVICE"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
186 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
187 case D3DERR_INVALIDCALL: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
188 error = "INVALIDCALL"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
189 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
190 case D3DERR_DRIVERINVALIDCALL: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
191 error = "DRIVERINVALIDCALL"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
192 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
193 case D3DERR_WASSTILLDRAWING: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
194 error = "WASSTILLDRAWING"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
195 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
196 default: |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
197 error = "UNKNOWN"; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
198 break; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
199 } |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
200 SDL_SetError("%s: %s", prefix, error); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
201 } |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
202 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
203 static D3DFORMAT |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
204 PixelFormatToD3DFMT(Uint32 format) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
205 { |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
206 switch (format) { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
207 case SDL_PIXELFORMAT_INDEX8: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
208 return D3DFMT_P8; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
209 case SDL_PIXELFORMAT_RGB332: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
210 return D3DFMT_R3G3B2; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
211 case SDL_PIXELFORMAT_RGB444: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
212 return D3DFMT_X4R4G4B4; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
213 case SDL_PIXELFORMAT_RGB555: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
214 return D3DFMT_X1R5G5B5; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
215 case SDL_PIXELFORMAT_ARGB4444: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
216 return D3DFMT_A4R4G4B4; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
217 case SDL_PIXELFORMAT_ARGB1555: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
218 return D3DFMT_A1R5G5B5; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
219 case SDL_PIXELFORMAT_RGB565: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
220 return D3DFMT_R5G6B5; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
221 case SDL_PIXELFORMAT_RGB888: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
222 return D3DFMT_X8R8G8B8; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
223 case SDL_PIXELFORMAT_ARGB8888: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
224 return D3DFMT_A8R8G8B8; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
225 case SDL_PIXELFORMAT_ARGB2101010: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
226 return D3DFMT_A2R10G10B10; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
227 case SDL_PIXELFORMAT_UYVY: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
228 return D3DFMT_UYVY; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
229 case SDL_PIXELFORMAT_YUY2: |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
230 return D3DFMT_YUY2; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
231 default: |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
232 return D3DFMT_UNKNOWN; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
233 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
234 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
235 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
236 static SDL_bool |
2990 | 237 D3D_IsTextureFormatAvailable(IDirect3D9 * d3d, Uint32 display_format, |
238 Uint32 texture_format) | |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
239 { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
240 HRESULT result; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
241 |
2990 | 242 result = IDirect3D9_CheckDeviceFormat(d3d, D3DADAPTER_DEFAULT, /* FIXME */ |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
243 D3DDEVTYPE_HAL, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
244 PixelFormatToD3DFMT(display_format), |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
245 0, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
246 D3DRTYPE_TEXTURE, |
2990 | 247 PixelFormatToD3DFMT |
248 (texture_format)); | |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
249 return FAILED(result) ? SDL_FALSE : SDL_TRUE; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
250 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
251 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
252 static void |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
253 UpdateYUVTextureData(SDL_Texture * texture) |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
254 { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
255 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
256 SDL_Rect rect; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
257 RECT d3drect; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
258 D3DLOCKED_RECT locked; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
259 HRESULT result; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
260 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
261 d3drect.left = 0; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
262 d3drect.right = texture->w; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
263 d3drect.top = 0; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
264 d3drect.bottom = texture->h; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
265 |
2990 | 266 result = |
267 IDirect3DTexture9_LockRect(data->texture, 0, &locked, &d3drect, 0); | |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
268 if (FAILED(result)) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
269 return; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
270 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
271 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
272 rect.x = 0; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
273 rect.y = 0; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
274 rect.w = texture->w; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
275 rect.h = texture->h; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
276 SDL_SW_CopyYUVToRGB(data->yuv, &rect, data->format, texture->w, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
277 texture->h, locked.pBits, locked.Pitch); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
278 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
279 IDirect3DTexture9_UnlockRect(data->texture, 0); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
280 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
281 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
282 void |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
283 D3D_AddRenderDriver(_THIS) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
284 { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
285 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; |
2972
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
286 SDL_RendererInfo *info = &D3D_RenderDriver.info; |
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
287 SDL_DisplayMode *mode = &SDL_CurrentDisplay.desktop_mode; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
288 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
289 if (data->d3d) { |
2972
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
290 int i; |
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
291 int formats[] = { |
2990 | 292 SDL_PIXELFORMAT_INDEX8, |
293 SDL_PIXELFORMAT_RGB332, | |
294 SDL_PIXELFORMAT_RGB444, | |
295 SDL_PIXELFORMAT_RGB555, | |
296 SDL_PIXELFORMAT_ARGB4444, | |
297 SDL_PIXELFORMAT_ARGB1555, | |
298 SDL_PIXELFORMAT_RGB565, | |
299 SDL_PIXELFORMAT_RGB888, | |
300 SDL_PIXELFORMAT_ARGB8888, | |
301 SDL_PIXELFORMAT_ARGB2101010, | |
2972
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
302 }; |
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
303 |
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
304 for (i = 0; i < SDL_arraysize(formats); ++i) { |
2990 | 305 if (D3D_IsTextureFormatAvailable |
306 (data->d3d, mode->format, formats[i])) { | |
307 info->texture_formats[info->num_texture_formats++] = | |
308 formats[i]; | |
2972
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
309 } |
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
310 } |
2990 | 311 info->texture_formats[info->num_texture_formats++] = |
312 SDL_PIXELFORMAT_YV12; | |
313 info->texture_formats[info->num_texture_formats++] = | |
314 SDL_PIXELFORMAT_IYUV; | |
315 info->texture_formats[info->num_texture_formats++] = | |
316 SDL_PIXELFORMAT_YUY2; | |
317 info->texture_formats[info->num_texture_formats++] = | |
318 SDL_PIXELFORMAT_UYVY; | |
319 info->texture_formats[info->num_texture_formats++] = | |
320 SDL_PIXELFORMAT_YVYU; | |
2972
0a4b70368372
Query available formats before advertising them.
Sam Lantinga <slouken@libsdl.org>
parents:
2933
diff
changeset
|
321 |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
322 SDL_AddRenderDriver(0, &D3D_RenderDriver); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
323 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
324 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
325 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
326 SDL_Renderer * |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
327 D3D_CreateRenderer(SDL_Window * window, Uint32 flags) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
328 { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
329 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
330 SDL_VideoData *videodata = (SDL_VideoData *) display->device->driverdata; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
331 SDL_WindowData *windowdata = (SDL_WindowData *) window->driverdata; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
332 SDL_Renderer *renderer; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
333 D3D_RenderData *data; |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
334 HRESULT result; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
335 D3DPRESENT_PARAMETERS pparams; |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
336 IDirect3DSwapChain9 *chain; |
1925
411bfb37082b
Query the maximum texture size for the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
337 D3DCAPS9 caps; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
338 |
1920
8a162bfdc838
Convert SDL_malloc to SDL_calloc if appropriate, slightly faster on operating systems which map the zero page for memory allocations.
Sam Lantinga <slouken@libsdl.org>
parents:
1918
diff
changeset
|
339 renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(*renderer)); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
340 if (!renderer) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
341 SDL_OutOfMemory(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
342 return NULL; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
343 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
344 |
1920
8a162bfdc838
Convert SDL_malloc to SDL_calloc if appropriate, slightly faster on operating systems which map the zero page for memory allocations.
Sam Lantinga <slouken@libsdl.org>
parents:
1918
diff
changeset
|
345 data = (D3D_RenderData *) SDL_calloc(1, sizeof(*data)); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
346 if (!data) { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
347 D3D_DestroyRenderer(renderer); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
348 SDL_OutOfMemory(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
349 return NULL; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
350 } |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
351 data->d3d = videodata->d3d; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
352 |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
353 renderer->DisplayModeChanged = D3D_DisplayModeChanged; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
354 renderer->CreateTexture = D3D_CreateTexture; |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
355 renderer->QueryTexturePixels = D3D_QueryTexturePixels; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
356 renderer->SetTexturePalette = D3D_SetTexturePalette; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
357 renderer->GetTexturePalette = D3D_GetTexturePalette; |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
358 renderer->SetTextureColorMod = D3D_SetTextureColorMod; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
359 renderer->SetTextureAlphaMod = D3D_SetTextureAlphaMod; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
360 renderer->SetTextureBlendMode = D3D_SetTextureBlendMode; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
361 renderer->SetTextureScaleMode = D3D_SetTextureScaleMode; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
362 renderer->UpdateTexture = D3D_UpdateTexture; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
363 renderer->LockTexture = D3D_LockTexture; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
364 renderer->UnlockTexture = D3D_UnlockTexture; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
365 renderer->DirtyTexture = D3D_DirtyTexture; |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
366 renderer->RenderPoint = D3D_RenderPoint; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
367 renderer->RenderLine = D3D_RenderLine; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
368 renderer->RenderFill = D3D_RenderFill; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
369 renderer->RenderCopy = D3D_RenderCopy; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
370 renderer->RenderPresent = D3D_RenderPresent; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
371 renderer->DestroyTexture = D3D_DestroyTexture; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
372 renderer->DestroyRenderer = D3D_DestroyRenderer; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
373 renderer->info = D3D_RenderDriver.info; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
374 renderer->window = window->id; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
375 renderer->driverdata = data; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
376 |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
377 renderer->info.flags = SDL_RENDERER_ACCELERATED; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
378 |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
379 SDL_zero(pparams); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
380 pparams.BackBufferWidth = window->w; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
381 pparams.BackBufferHeight = window->h; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
382 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
383 pparams.BackBufferFormat = |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
384 PixelFormatToD3DFMT(display->fullscreen_mode.format); |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
385 } else { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
386 pparams.BackBufferFormat = D3DFMT_UNKNOWN; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
387 } |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
388 if (flags & SDL_RENDERER_PRESENTFLIP2) { |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
389 pparams.BackBufferCount = 2; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
390 pparams.SwapEffect = D3DSWAPEFFECT_FLIP; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
391 } else if (flags & SDL_RENDERER_PRESENTFLIP3) { |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
392 pparams.BackBufferCount = 3; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
393 pparams.SwapEffect = D3DSWAPEFFECT_FLIP; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
394 } else if (flags & SDL_RENDERER_PRESENTCOPY) { |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
395 pparams.BackBufferCount = 1; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
396 pparams.SwapEffect = D3DSWAPEFFECT_COPY; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
397 } else { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
398 pparams.BackBufferCount = 1; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
399 pparams.SwapEffect = D3DSWAPEFFECT_DISCARD; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
400 } |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
401 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
402 pparams.Windowed = FALSE; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
403 pparams.FullScreen_RefreshRateInHz = |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
404 display->fullscreen_mode.refresh_rate; |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
405 } else { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
406 pparams.Windowed = TRUE; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
407 pparams.FullScreen_RefreshRateInHz = 0; |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
408 } |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
409 if (flags & SDL_RENDERER_PRESENTVSYNC) { |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
410 pparams.PresentationInterval = D3DPRESENT_INTERVAL_ONE; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
411 } else { |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
412 pparams.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
413 } |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
414 |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
415 result = IDirect3D9_CreateDevice(videodata->d3d, D3DADAPTER_DEFAULT, /* FIXME */ |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
416 D3DDEVTYPE_HAL, |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
417 windowdata->hwnd, |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
418 D3DCREATE_SOFTWARE_VERTEXPROCESSING, |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
419 &pparams, &data->device); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
420 if (FAILED(result)) { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
421 D3D_DestroyRenderer(renderer); |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
422 D3D_SetError("CreateDevice()", result); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
423 return NULL; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
424 } |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
425 data->beginScene = SDL_TRUE; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
426 |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
427 /* Get presentation parameters to fill info */ |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
428 result = IDirect3DDevice9_GetSwapChain(data->device, 0, &chain); |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
429 if (FAILED(result)) { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
430 D3D_DestroyRenderer(renderer); |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
431 D3D_SetError("GetSwapChain()", result); |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
432 return NULL; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
433 } |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
434 result = IDirect3DSwapChain9_GetPresentParameters(chain, &pparams); |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
435 if (FAILED(result)) { |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
436 IDirect3DSwapChain9_Release(chain); |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
437 D3D_DestroyRenderer(renderer); |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
438 D3D_SetError("GetPresentParameters()", result); |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
439 return NULL; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
440 } |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
441 IDirect3DSwapChain9_Release(chain); |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
442 switch (pparams.SwapEffect) { |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
443 case D3DSWAPEFFECT_COPY: |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
444 renderer->info.flags |= SDL_RENDERER_PRESENTCOPY; |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
445 break; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
446 case D3DSWAPEFFECT_FLIP: |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
447 switch (pparams.BackBufferCount) { |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
448 case 2: |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
449 renderer->info.flags |= SDL_RENDERER_PRESENTFLIP2; |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
450 break; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
451 case 3: |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
452 renderer->info.flags |= SDL_RENDERER_PRESENTFLIP3; |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
453 break; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
454 } |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
455 break; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
456 case D3DSWAPEFFECT_DISCARD: |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
457 renderer->info.flags |= SDL_RENDERER_PRESENTDISCARD; |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
458 break; |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
459 } |
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
460 if (pparams.PresentationInterval == D3DPRESENT_INTERVAL_ONE) { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
461 renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC; |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
462 } |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
463 data->pparams = pparams; |
1907
06c27a737b7a
Streamlined the API a bit and optimized the software renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1905
diff
changeset
|
464 |
1925
411bfb37082b
Query the maximum texture size for the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
465 IDirect3DDevice9_GetDeviceCaps(data->device, &caps); |
411bfb37082b
Query the maximum texture size for the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
466 renderer->info.max_texture_width = caps.MaxTextureWidth; |
411bfb37082b
Query the maximum texture size for the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
467 renderer->info.max_texture_height = caps.MaxTextureHeight; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
1917
diff
changeset
|
468 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
469 /* Set up parameters for rendering */ |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
470 IDirect3DDevice9_SetVertexShader(data->device, NULL); |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
471 IDirect3DDevice9_SetFVF(data->device, |
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
472 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1); |
1988
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
473 IDirect3DDevice9_SetRenderState(data->device, D3DRS_ZENABLE, D3DZB_FALSE); |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
474 IDirect3DDevice9_SetRenderState(data->device, D3DRS_CULLMODE, |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
475 D3DCULL_NONE); |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
476 IDirect3DDevice9_SetRenderState(data->device, D3DRS_LIGHTING, FALSE); |
1988
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
477 /* Enable color modulation by diffuse color */ |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
478 IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLOROP, |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
479 D3DTOP_MODULATE); |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
480 IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLORARG1, |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
481 D3DTA_TEXTURE); |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
482 IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_COLORARG2, |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
483 D3DTA_DIFFUSE); |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
484 /* Enable alpha modulation by diffuse alpha */ |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
485 IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAOP, |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
486 D3DTOP_MODULATE); |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
487 IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAARG1, |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
488 D3DTA_TEXTURE); |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
489 IDirect3DDevice9_SetTextureStageState(data->device, 0, D3DTSS_ALPHAARG2, |
1ee02169bbb0
Figured out how texture stages work, thanks to this:
Sam Lantinga <slouken@libsdl.org>
parents:
1987
diff
changeset
|
490 D3DTA_DIFFUSE); |
1991
3863ba81c1d6
Clear the second texture stage explicitly
Sam Lantinga <slouken@libsdl.org>
parents:
1988
diff
changeset
|
491 /* Disable second texture stage, since we're done */ |
3863ba81c1d6
Clear the second texture stage explicitly
Sam Lantinga <slouken@libsdl.org>
parents:
1988
diff
changeset
|
492 IDirect3DDevice9_SetTextureStageState(data->device, 1, D3DTSS_COLOROP, |
3863ba81c1d6
Clear the second texture stage explicitly
Sam Lantinga <slouken@libsdl.org>
parents:
1988
diff
changeset
|
493 D3DTOP_DISABLE); |
3863ba81c1d6
Clear the second texture stage explicitly
Sam Lantinga <slouken@libsdl.org>
parents:
1988
diff
changeset
|
494 IDirect3DDevice9_SetTextureStageState(data->device, 1, D3DTSS_ALPHAOP, |
3863ba81c1d6
Clear the second texture stage explicitly
Sam Lantinga <slouken@libsdl.org>
parents:
1988
diff
changeset
|
495 D3DTOP_DISABLE); |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
496 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
497 return renderer; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
498 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
499 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
500 static int |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
501 D3D_Reset(SDL_Renderer * renderer) |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
502 { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
503 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
504 HRESULT result; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
505 |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
506 result = IDirect3DDevice9_Reset(data->device, &data->pparams); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
507 if (FAILED(result)) { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
508 if (result == D3DERR_DEVICELOST) { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
509 /* Don't worry about it, we'll reset later... */ |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
510 return 0; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
511 } else { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
512 D3D_SetError("Reset()", result); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
513 return -1; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
514 } |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
515 } |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
516 IDirect3DDevice9_SetVertexShader(data->device, NULL); |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
517 IDirect3DDevice9_SetFVF(data->device, |
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
518 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1); |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
519 IDirect3DDevice9_SetRenderState(data->device, D3DRS_CULLMODE, |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
520 D3DCULL_NONE); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
521 IDirect3DDevice9_SetRenderState(data->device, D3DRS_LIGHTING, FALSE); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
522 return 0; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
523 } |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
524 |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
525 static int |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
526 D3D_DisplayModeChanged(SDL_Renderer * renderer) |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
527 { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
528 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
529 SDL_Window *window = SDL_GetWindowFromID(renderer->window); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
530 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
531 |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
532 data->pparams.BackBufferWidth = window->w; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
533 data->pparams.BackBufferHeight = window->h; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
534 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
535 data->pparams.BackBufferFormat = |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
536 PixelFormatToD3DFMT(display->fullscreen_mode.format); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
537 } else { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
538 data->pparams.BackBufferFormat = D3DFMT_UNKNOWN; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
539 } |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
540 return D3D_Reset(renderer); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
541 } |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
542 |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
543 static int |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
544 D3D_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
545 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
546 D3D_RenderData *renderdata = (D3D_RenderData *) renderer->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
547 SDL_Window *window = SDL_GetWindowFromID(renderer->window); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
548 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
549 Uint32 display_format = display->current_mode.format; |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
550 D3D_TextureData *data; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
551 HRESULT result; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
552 |
1920
8a162bfdc838
Convert SDL_malloc to SDL_calloc if appropriate, slightly faster on operating systems which map the zero page for memory allocations.
Sam Lantinga <slouken@libsdl.org>
parents:
1918
diff
changeset
|
553 data = (D3D_TextureData *) SDL_calloc(1, sizeof(*data)); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
554 if (!data) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
555 SDL_OutOfMemory(); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
556 return -1; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
557 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
558 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
559 texture->driverdata = data; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
560 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
561 if (SDL_ISPIXELFORMAT_FOURCC(texture->format) && |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
562 (texture->format != SDL_PIXELFORMAT_YUY2 || |
2990 | 563 !D3D_IsTextureFormatAvailable(renderdata->d3d, display_format, |
564 texture->format)) | |
565 && (texture->format != SDL_PIXELFORMAT_YVYU | |
566 || !D3D_IsTextureFormatAvailable(renderdata->d3d, display_format, | |
567 texture->format))) { | |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
568 data->yuv = |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
569 SDL_SW_CreateYUVTexture(texture->format, texture->w, texture->h); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
570 if (!data->yuv) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
571 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
572 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
573 data->format = display->current_mode.format; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
574 } else { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
575 data->format = texture->format; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
576 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
577 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
578 result = |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
579 IDirect3DDevice9_CreateTexture(renderdata->device, texture->w, |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
580 texture->h, 1, 0, |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
581 PixelFormatToD3DFMT(data->format), |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
582 D3DPOOL_SDL, &data->texture, NULL); |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
583 if (FAILED(result)) { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
584 D3D_SetError("CreateTexture()", result); |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
585 return -1; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
586 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
587 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
588 return 0; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
589 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
590 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
591 static int |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
592 D3D_QueryTexturePixels(SDL_Renderer * renderer, SDL_Texture * texture, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
593 void **pixels, int *pitch) |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
594 { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
595 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
596 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
597 if (data->yuv) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
598 return SDL_SW_QueryYUVTexturePixels(data->yuv, pixels, pitch); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
599 } else { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
600 /* D3D textures don't have their pixels hanging out */ |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
601 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
602 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
603 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
604 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
605 static int |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
606 D3D_SetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
607 const SDL_Color * colors, int firstcolor, int ncolors) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
608 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
609 D3D_RenderData *renderdata = (D3D_RenderData *) renderer->driverdata; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
610 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
611 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
612 return 0; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
613 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
614 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
615 static int |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
616 D3D_GetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
617 SDL_Color * colors, int firstcolor, int ncolors) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
618 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
619 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
620 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
621 return 0; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
622 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
623 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
624 static int |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
625 D3D_SetTextureColorMod(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
626 { |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
627 return 0; |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
628 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
629 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
630 static int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
631 D3D_SetTextureAlphaMod(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
632 { |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
633 return 0; |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
634 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
635 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
636 static int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
637 D3D_SetTextureBlendMode(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
638 { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
639 switch (texture->blendMode) { |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
640 case SDL_BLENDMODE_NONE: |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
641 case SDL_BLENDMODE_MASK: |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
642 case SDL_BLENDMODE_BLEND: |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
643 case SDL_BLENDMODE_ADD: |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
644 case SDL_BLENDMODE_MOD: |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
645 return 0; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
646 default: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
647 SDL_Unsupported(); |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
648 texture->blendMode = SDL_BLENDMODE_NONE; |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
649 return -1; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
650 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
651 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
652 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
653 static int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
654 D3D_SetTextureScaleMode(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
655 { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
656 switch (texture->scaleMode) { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
657 case SDL_TEXTURESCALEMODE_NONE: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
658 case SDL_TEXTURESCALEMODE_FAST: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
659 case SDL_TEXTURESCALEMODE_SLOW: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
660 case SDL_TEXTURESCALEMODE_BEST: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
661 return 0; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
662 default: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
663 SDL_Unsupported(); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
664 texture->scaleMode = SDL_TEXTURESCALEMODE_NONE; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
665 return -1; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
666 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
667 return 0; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
668 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
669 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
670 static int |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
671 D3D_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
672 const SDL_Rect * rect, const void *pixels, int pitch) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
673 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
674 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
675 D3D_RenderData *renderdata = (D3D_RenderData *) renderer->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
676 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
677 if (data->yuv) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
678 if (SDL_SW_UpdateYUVTexture(data->yuv, rect, pixels, pitch) < 0) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
679 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
680 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
681 UpdateYUVTextureData(texture); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
682 return 0; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
683 } else { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
684 #ifdef SDL_MEMORY_POOL_DEFAULT |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
685 IDirect3DTexture9 *temp; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
686 RECT d3drect; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
687 D3DLOCKED_RECT locked; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
688 const Uint8 *src; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
689 Uint8 *dst; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
690 int row, length; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
691 HRESULT result; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
692 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
693 result = |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
694 IDirect3DDevice9_CreateTexture(renderdata->device, texture->w, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
695 texture->h, 1, 0, |
3013
8cc00819c8d6
Reverted Bob's indent checkin
Sam Lantinga <slouken@libsdl.org>
parents:
3011
diff
changeset
|
696 PixelFormatToD3DFMT(texture-> |
8cc00819c8d6
Reverted Bob's indent checkin
Sam Lantinga <slouken@libsdl.org>
parents:
3011
diff
changeset
|
697 format), |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
698 D3DPOOL_SYSTEMMEM, &temp, NULL); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
699 if (FAILED(result)) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
700 D3D_SetError("CreateTexture()", result); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
701 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
702 } |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
703 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
704 d3drect.left = rect->x; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
705 d3drect.right = rect->x + rect->w; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
706 d3drect.top = rect->y; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
707 d3drect.bottom = rect->y + rect->h; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
708 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
709 result = IDirect3DTexture9_LockRect(temp, 0, &locked, &d3drect, 0); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
710 if (FAILED(result)) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
711 IDirect3DTexture9_Release(temp); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
712 D3D_SetError("LockRect()", result); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
713 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
714 } |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
715 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
716 src = pixels; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
717 dst = locked.pBits; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
718 length = rect->w * SDL_BYTESPERPIXEL(texture->format); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
719 for (row = 0; row < rect->h; ++row) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
720 SDL_memcpy(dst, src, length); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
721 src += pitch; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
722 dst += locked.Pitch; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
723 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
724 IDirect3DTexture9_UnlockRect(temp, 0); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
725 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
726 result = |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
727 IDirect3DDevice9_UpdateTexture(renderdata->device, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
728 (IDirect3DBaseTexture9 *) temp, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
729 (IDirect3DBaseTexture9 *) |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
730 data->texture); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
731 IDirect3DTexture9_Release(temp); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
732 if (FAILED(result)) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
733 D3D_SetError("UpdateTexture()", result); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
734 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
735 } |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
736 #else |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
737 RECT d3drect; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
738 D3DLOCKED_RECT locked; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
739 const Uint8 *src; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
740 Uint8 *dst; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
741 int row, length; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
742 HRESULT result; |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
743 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
744 d3drect.left = rect->x; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
745 d3drect.right = rect->x + rect->w; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
746 d3drect.top = rect->y; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
747 d3drect.bottom = rect->y + rect->h; |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
748 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
749 result = |
2990 | 750 IDirect3DTexture9_LockRect(data->texture, 0, &locked, &d3drect, |
751 0); | |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
752 if (FAILED(result)) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
753 D3D_SetError("LockRect()", result); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
754 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
755 } |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
756 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
757 src = pixels; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
758 dst = locked.pBits; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
759 length = rect->w * SDL_BYTESPERPIXEL(texture->format); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
760 for (row = 0; row < rect->h; ++row) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
761 SDL_memcpy(dst, src, length); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
762 src += pitch; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
763 dst += locked.Pitch; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
764 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
765 IDirect3DTexture9_UnlockRect(data->texture, 0); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
766 #endif // SDL_MEMORY_POOL_DEFAULT |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
767 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
768 return 0; |
2783
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
769 } |
e33ad7ebb7eb
Fixed Direct3D rendering
Sam Lantinga <slouken@libsdl.org>
parents:
2735
diff
changeset
|
770 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
771 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
772 static int |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
773 D3D_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
774 const SDL_Rect * rect, int markDirty, void **pixels, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
775 int *pitch) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
776 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
777 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
778 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
779 if (data->yuv) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
780 return SDL_SW_LockYUVTexture(data->yuv, rect, markDirty, pixels, |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
781 pitch); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
782 } else { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
783 RECT d3drect; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
784 D3DLOCKED_RECT locked; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
785 HRESULT result; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
786 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
787 d3drect.left = rect->x; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
788 d3drect.right = rect->x + rect->w; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
789 d3drect.top = rect->y; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
790 d3drect.bottom = rect->y + rect->h; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
791 |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
792 result = |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
793 IDirect3DTexture9_LockRect(data->texture, 0, &locked, &d3drect, |
2990 | 794 markDirty ? 0 : |
795 D3DLOCK_NO_DIRTY_UPDATE); | |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
796 if (FAILED(result)) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
797 D3D_SetError("LockRect()", result); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
798 return -1; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
799 } |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
800 *pixels = locked.pBits; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
801 *pitch = locked.Pitch; |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
802 return 0; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
803 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
804 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
805 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
806 static void |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
807 D3D_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
808 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
809 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
810 |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
811 if (data->yuv) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
812 SDL_SW_UnlockYUVTexture(data->yuv); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
813 UpdateYUVTextureData(texture); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
814 } else { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
815 IDirect3DTexture9_UnlockRect(data->texture, 0); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
816 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
817 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
818 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
819 static void |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
820 D3D_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, int numrects, |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
821 const SDL_Rect * rects) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
822 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
823 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
824 RECT d3drect; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
825 int i; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
826 |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
827 for (i = 0; i < numrects; ++i) { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
828 const SDL_Rect *rect = &rects[i]; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
829 |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
830 d3drect.left = rect->x; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
831 d3drect.right = rect->x + rect->w; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
832 d3drect.top = rect->y; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
833 d3drect.bottom = rect->y + rect->h; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
834 |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
835 IDirect3DTexture9_AddDirtyRect(data->texture, &d3drect); |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
836 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
837 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
838 |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
839 static void |
2933 | 840 D3D_SetBlendMode(D3D_RenderData * data, int blendMode) |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
841 { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
842 switch (blendMode) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
843 case SDL_BLENDMODE_NONE: |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
844 IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
845 FALSE); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
846 break; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
847 case SDL_BLENDMODE_MASK: |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
848 case SDL_BLENDMODE_BLEND: |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
849 IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
850 TRUE); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
851 IDirect3DDevice9_SetRenderState(data->device, D3DRS_SRCBLEND, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
852 D3DBLEND_SRCALPHA); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
853 IDirect3DDevice9_SetRenderState(data->device, D3DRS_DESTBLEND, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
854 D3DBLEND_INVSRCALPHA); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
855 break; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
856 case SDL_BLENDMODE_ADD: |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
857 IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
858 TRUE); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
859 IDirect3DDevice9_SetRenderState(data->device, D3DRS_SRCBLEND, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
860 D3DBLEND_SRCALPHA); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
861 IDirect3DDevice9_SetRenderState(data->device, D3DRS_DESTBLEND, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
862 D3DBLEND_ONE); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
863 break; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
864 case SDL_BLENDMODE_MOD: |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
865 IDirect3DDevice9_SetRenderState(data->device, D3DRS_ALPHABLENDENABLE, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
866 TRUE); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
867 IDirect3DDevice9_SetRenderState(data->device, D3DRS_SRCBLEND, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
868 D3DBLEND_ZERO); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
869 IDirect3DDevice9_SetRenderState(data->device, D3DRS_DESTBLEND, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
870 D3DBLEND_SRCCOLOR); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
871 break; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
872 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
873 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
874 |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
875 static int |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
876 D3D_RenderPoint(SDL_Renderer * renderer, int x, int y) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
877 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
878 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
879 DWORD color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
880 Vertex vertices[1]; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
881 HRESULT result; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
882 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
883 if (data->beginScene) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
884 IDirect3DDevice9_BeginScene(data->device); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
885 data->beginScene = SDL_FALSE; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
886 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
887 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
888 color = D3DCOLOR_ARGB(renderer->a, renderer->r, renderer->g, renderer->b); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
889 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
890 vertices[0].x = (float) x - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
891 vertices[0].y = (float) y - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
892 vertices[0].z = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
893 vertices[0].rhw = 1.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
894 vertices[0].color = color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
895 vertices[0].u = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
896 vertices[0].v = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
897 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
898 D3D_SetBlendMode(data, renderer->blendMode); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
899 |
2933 | 900 result = |
901 IDirect3DDevice9_SetTexture(data->device, 0, | |
902 (IDirect3DBaseTexture9 *) 0); | |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
903 if (FAILED(result)) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
904 D3D_SetError("SetTexture()", result); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
905 return -1; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
906 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
907 result = |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
908 IDirect3DDevice9_DrawPrimitiveUP(data->device, D3DPT_POINTLIST, 1, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
909 vertices, sizeof(*vertices)); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
910 if (FAILED(result)) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
911 D3D_SetError("DrawPrimitiveUP()", result); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
912 return -1; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
913 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
914 return 0; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
915 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
916 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
917 static int |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
918 D3D_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2) |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
919 { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
920 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
921 DWORD color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
922 Vertex vertices[2]; |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
923 HRESULT result; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
924 |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
925 if (data->beginScene) { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
926 IDirect3DDevice9_BeginScene(data->device); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
927 data->beginScene = SDL_FALSE; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
928 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
929 |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
930 color = D3DCOLOR_ARGB(renderer->a, renderer->r, renderer->g, renderer->b); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
931 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
932 vertices[0].x = (float) x1 - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
933 vertices[0].y = (float) y1 - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
934 vertices[0].z = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
935 vertices[0].rhw = 1.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
936 vertices[0].color = color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
937 vertices[0].u = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
938 vertices[0].v = 0.0f; |
1901
f1828a500391
Removed libc dependency on Windows again, to fix building with Visual C++ 2005 Express Edition.
Sam Lantinga <slouken@libsdl.org>
parents:
1900
diff
changeset
|
939 |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
940 vertices[1].x = (float) x2 - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
941 vertices[1].y = (float) y2 - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
942 vertices[1].z = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
943 vertices[1].rhw = 1.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
944 vertices[1].color = color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
945 vertices[1].u = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
946 vertices[1].v = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
947 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
948 D3D_SetBlendMode(data, renderer->blendMode); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
949 |
2933 | 950 result = |
951 IDirect3DDevice9_SetTexture(data->device, 0, | |
952 (IDirect3DBaseTexture9 *) 0); | |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
953 if (FAILED(result)) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
954 D3D_SetError("SetTexture()", result); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
955 return -1; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
956 } |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
957 result = |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
958 IDirect3DDevice9_DrawPrimitiveUP(data->device, D3DPT_LINELIST, 1, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
959 vertices, sizeof(*vertices)); |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
960 if (FAILED(result)) { |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
961 D3D_SetError("DrawPrimitiveUP()", result); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
962 return -1; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
963 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
964 return 0; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
965 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
966 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
967 static int |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
968 D3D_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect) |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
969 { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
970 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
971 float minx, miny, maxx, maxy; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
972 DWORD color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
973 Vertex vertices[4]; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
974 HRESULT result; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
975 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
976 if (data->beginScene) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
977 IDirect3DDevice9_BeginScene(data->device); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
978 data->beginScene = SDL_FALSE; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
979 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
980 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
981 minx = (float) rect->x - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
982 miny = (float) rect->y - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
983 maxx = (float) rect->x + rect->w - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
984 maxy = (float) rect->y + rect->h - 0.5f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
985 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
986 color = D3DCOLOR_ARGB(renderer->a, renderer->r, renderer->g, renderer->b); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
987 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
988 vertices[0].x = minx; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
989 vertices[0].y = miny; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
990 vertices[0].z = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
991 vertices[0].rhw = 1.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
992 vertices[0].color = color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
993 vertices[0].u = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
994 vertices[0].v = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
995 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
996 vertices[1].x = maxx; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
997 vertices[1].y = miny; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
998 vertices[1].z = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
999 vertices[1].rhw = 1.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1000 vertices[1].color = color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1001 vertices[1].u = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1002 vertices[1].v = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1003 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1004 vertices[2].x = maxx; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1005 vertices[2].y = maxy; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1006 vertices[2].z = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1007 vertices[2].rhw = 1.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1008 vertices[2].color = color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1009 vertices[2].u = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1010 vertices[2].v = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1011 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1012 vertices[3].x = minx; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1013 vertices[3].y = maxy; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1014 vertices[3].z = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1015 vertices[3].rhw = 1.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1016 vertices[3].color = color; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1017 vertices[3].u = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1018 vertices[3].v = 0.0f; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1019 |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1020 D3D_SetBlendMode(data, renderer->blendMode); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1021 |
2933 | 1022 result = |
1023 IDirect3DDevice9_SetTexture(data->device, 0, | |
1024 (IDirect3DBaseTexture9 *) 0); | |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1025 if (FAILED(result)) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1026 D3D_SetError("SetTexture()", result); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1027 return -1; |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1028 } |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1029 result = |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1030 IDirect3DDevice9_DrawPrimitiveUP(data->device, D3DPT_TRIANGLEFAN, 2, |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1031 vertices, sizeof(*vertices)); |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1032 if (FAILED(result)) { |
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1033 D3D_SetError("DrawPrimitiveUP()", result); |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1034 return -1; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1035 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1036 return 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1037 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1038 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1039 static int |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1040 D3D_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
1041 const SDL_Rect * srcrect, const SDL_Rect * dstrect) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1042 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1043 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1044 D3D_TextureData *texturedata = (D3D_TextureData *) texture->driverdata; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1045 float minx, miny, maxx, maxy; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1046 float minu, maxu, minv, maxv; |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
1047 DWORD color; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1048 Vertex vertices[4]; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1049 HRESULT result; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1050 |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1051 if (data->beginScene) { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1052 IDirect3DDevice9_BeginScene(data->device); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1053 data->beginScene = SDL_FALSE; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1054 } |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1055 |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1056 minx = (float) dstrect->x - 0.5f; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1057 miny = (float) dstrect->y - 0.5f; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1058 maxx = (float) dstrect->x + dstrect->w - 0.5f; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1059 maxy = (float) dstrect->y + dstrect->h - 0.5f; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1060 |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1061 minu = (float) srcrect->x / texture->w; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1062 maxu = (float) (srcrect->x + srcrect->w) / texture->w; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1063 minv = (float) srcrect->y / texture->h; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1064 maxv = (float) (srcrect->y + srcrect->h) / texture->h; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1065 |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
1066 color = D3DCOLOR_ARGB(texture->a, texture->r, texture->g, texture->b); |
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
1067 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1068 vertices[0].x = minx; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1069 vertices[0].y = miny; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1070 vertices[0].z = 0.0f; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1071 vertices[0].rhw = 1.0f; |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
1072 vertices[0].color = color; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1073 vertices[0].u = minu; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1074 vertices[0].v = minv; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1075 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1076 vertices[1].x = maxx; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1077 vertices[1].y = miny; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1078 vertices[1].z = 0.0f; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1079 vertices[1].rhw = 1.0f; |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
1080 vertices[1].color = color; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1081 vertices[1].u = maxu; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1082 vertices[1].v = minv; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1083 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1084 vertices[2].x = maxx; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1085 vertices[2].y = maxy; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1086 vertices[2].z = 0.0f; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1087 vertices[2].rhw = 1.0f; |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
1088 vertices[2].color = color; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1089 vertices[2].u = maxu; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1090 vertices[2].v = maxv; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1091 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1092 vertices[3].x = minx; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1093 vertices[3].y = maxy; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1094 vertices[3].z = 0.0f; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1095 vertices[3].rhw = 1.0f; |
1987
36a08379b3f2
Implemented color modulation in the D3D renderer.
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
1096 vertices[3].color = color; |
1904
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1097 vertices[3].u = minu; |
1a713f9d1f71
Yay! D3D renderer works!
Sam Lantinga <slouken@libsdl.org>
parents:
1903
diff
changeset
|
1098 vertices[3].v = maxv; |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1099 |
2932
676754cc1acb
Implemented Direct3D line and point drawing
Sam Lantinga <slouken@libsdl.org>
parents:
2920
diff
changeset
|
1100 D3D_SetBlendMode(data, texture->blendMode); |
1916
c773b0c0ac89
Implemented blend modes in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1913
diff
changeset
|
1101 |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1976
diff
changeset
|
1102 switch (texture->scaleMode) { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
1103 case SDL_TEXTURESCALEMODE_NONE: |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
1104 case SDL_TEXTURESCALEMODE_FAST: |
1917
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1105 IDirect3DDevice9_SetSamplerState(data->device, 0, D3DSAMP_MINFILTER, |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1106 D3DTEXF_POINT); |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1107 IDirect3DDevice9_SetSamplerState(data->device, 0, D3DSAMP_MAGFILTER, |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1108 D3DTEXF_POINT); |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1109 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
1110 case SDL_TEXTURESCALEMODE_SLOW: |
1917
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1111 IDirect3DDevice9_SetSamplerState(data->device, 0, D3DSAMP_MINFILTER, |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1112 D3DTEXF_LINEAR); |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1113 IDirect3DDevice9_SetSamplerState(data->device, 0, D3DSAMP_MAGFILTER, |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1114 D3DTEXF_LINEAR); |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1115 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1925
diff
changeset
|
1116 case SDL_TEXTURESCALEMODE_BEST: |
1917
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1117 IDirect3DDevice9_SetSamplerState(data->device, 0, D3DSAMP_MINFILTER, |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1118 D3DTEXF_GAUSSIANQUAD); |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1119 IDirect3DDevice9_SetSamplerState(data->device, 0, D3DSAMP_MAGFILTER, |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1120 D3DTEXF_GAUSSIANQUAD); |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1121 break; |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1122 } |
3f54b3ec5a07
Implemented scaling in the D3D renderer
Sam Lantinga <slouken@libsdl.org>
parents:
1916
diff
changeset
|
1123 |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1124 result = |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
1125 IDirect3DDevice9_SetTexture(data->device, 0, (IDirect3DBaseTexture9 *) |
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
1126 texturedata->texture); |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1127 if (FAILED(result)) { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1128 D3D_SetError("SetTexture()", result); |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1129 return -1; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1130 } |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1131 result = |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1132 IDirect3DDevice9_DrawPrimitiveUP(data->device, D3DPT_TRIANGLEFAN, 2, |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1133 vertices, sizeof(*vertices)); |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1134 if (FAILED(result)) { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1135 D3D_SetError("DrawPrimitiveUP()", result); |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1136 return -1; |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1137 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1138 return 0; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1139 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1140 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1141 static void |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1142 D3D_RenderPresent(SDL_Renderer * renderer) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1143 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1144 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1145 HRESULT result; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1146 |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1147 if (!data->beginScene) { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1148 IDirect3DDevice9_EndScene(data->device); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1149 data->beginScene = SDL_TRUE; |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1150 } |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1151 |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1152 result = IDirect3DDevice9_TestCooperativeLevel(data->device); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1153 if (result == D3DERR_DEVICELOST) { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1154 /* We'll reset later */ |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1155 return; |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1156 } |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1157 if (result == D3DERR_DEVICENOTRESET) { |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1158 D3D_Reset(renderer); |
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1159 } |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1160 result = IDirect3DDevice9_Present(data->device, NULL, NULL, NULL, NULL); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1161 if (FAILED(result)) { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1162 D3D_SetError("Present()", result); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1163 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1164 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1165 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1166 static void |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1167 D3D_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1168 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1169 D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1170 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1171 if (!data) { |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1172 return; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1173 } |
2973
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
1174 if (data->yuv) { |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
1175 SDL_SW_DestroyYUVTexture(data->yuv); |
ab0c00f1b070
Improved Direct3D YUV texture support
Sam Lantinga <slouken@libsdl.org>
parents:
2972
diff
changeset
|
1176 } |
1903
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1177 if (data->texture) { |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1178 IDirect3DTexture9_Release(data->texture); |
f132024010be
More of the Direct3D renderer is implemented, I'm not sure why it's not showing texture copies yet...
Sam Lantinga <slouken@libsdl.org>
parents:
1901
diff
changeset
|
1179 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1180 SDL_free(data); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1181 texture->driverdata = NULL; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1182 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1183 |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
1184 static void |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1185 D3D_DestroyRenderer(SDL_Renderer * renderer) |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1186 { |
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1907
diff
changeset
|
1187 D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1188 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1189 if (data) { |
1900
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1190 if (data->device) { |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1191 IDirect3DDevice9_Release(data->device); |
5c6bdbf3aadf
First stab at a D3D renderer, only 30FPS so far... ?
Sam Lantinga <slouken@libsdl.org>
parents:
1898
diff
changeset
|
1192 } |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1193 SDL_free(data); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1194 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1195 SDL_free(renderer); |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1196 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1197 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1198 #endif /* SDL_VIDEO_RENDER_D3D */ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1199 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1200 /* vi: set ts=4 sw=4 expandtab: */ |