Mercurial > sdl-ios-xcode
annotate src/video/SDL_renderer_gl.c @ 2832:0379769e8caa
The matrices have already been set, so you don't have to re-set them.
You always need to reset the viewport when activating the renderer in
case the context had been set to a different window previously.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 05 Dec 2008 06:22:19 +0000 |
parents | 49243a6e9ff1 |
children | c2e182a37f5f |
rev | line source |
---|---|
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 /* |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 SDL - Simple DirectMedia Layer |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 Copyright (C) 1997-2006 Sam Lantinga |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 This library is free software; you can redistribute it and/or |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 modify it under the terms of the GNU Lesser General Public |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 License as published by the Free Software Foundation; either |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 version 2.1 of the License, or (at your option) any later version. |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 This library is distributed in the hope that it will be useful, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 Lesser General Public License for more details. |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 You should have received a copy of the GNU Lesser General Public |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 License along with this library; if not, write to the Free Software |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 Sam Lantinga |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 slouken@libsdl.org |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 */ |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 #include "SDL_config.h" |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 |
1952
420716272158
Implemented X11 OpenGL support.
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
24 #if SDL_VIDEO_RENDER_OGL |
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:
1919
diff
changeset
|
25 |
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:
1919
diff
changeset
|
26 #include "SDL_video.h" |
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:
1919
diff
changeset
|
27 #include "SDL_opengl.h" |
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:
1919
diff
changeset
|
28 #include "SDL_sysvideo.h" |
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:
1919
diff
changeset
|
29 #include "SDL_pixels_c.h" |
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:
1919
diff
changeset
|
30 #include "SDL_rect_c.h" |
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:
1919
diff
changeset
|
31 #include "SDL_yuv_sw_c.h" |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
32 |
2246
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
33 #ifdef __MACOSX__ |
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
34 #include <OpenGL/OpenGL.h> |
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
35 #endif |
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
36 |
2778
38dfc890ee6b
Preliminary support for YUV textures
Sam Lantinga <slouken@libsdl.org>
parents:
2328
diff
changeset
|
37 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 /* OpenGL renderer implementation */ |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 |
2230
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
40 /* Details on optimizing the texture path on Mac OS X: |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
41 http://developer.apple.com/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_texturedata/chapter_10_section_2.html |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
42 */ |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
43 |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
44 static const float inv255f = 1.0f / 255.0f; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
45 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 static SDL_Renderer *GL_CreateRenderer(SDL_Window * window, Uint32 flags); |
1923
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
47 static int GL_ActivateRenderer(SDL_Renderer * renderer); |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
48 static int GL_DisplayModeChanged(SDL_Renderer * renderer); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 static int GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture); |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
50 static int GL_QueryTexturePixels(SDL_Renderer * renderer, |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
51 SDL_Texture * texture, void **pixels, |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
52 int *pitch); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 static int GL_SetTexturePalette(SDL_Renderer * renderer, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
54 SDL_Texture * texture, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
55 const SDL_Color * colors, int firstcolor, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
56 int ncolors); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 static int GL_GetTexturePalette(SDL_Renderer * renderer, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 SDL_Texture * texture, SDL_Color * colors, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 int firstcolor, int ncolors); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
60 static int GL_SetTextureColorMod(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
61 SDL_Texture * texture); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
62 static int GL_SetTextureAlphaMod(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
63 SDL_Texture * texture); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
64 static int GL_SetTextureBlendMode(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
65 SDL_Texture * texture); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
66 static int GL_SetTextureScaleMode(SDL_Renderer * renderer, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
67 SDL_Texture * texture); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
68 static int GL_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
69 const SDL_Rect * rect, const void *pixels, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
70 int pitch); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 static int GL_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
72 const SDL_Rect * rect, int markDirty, void **pixels, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
73 int *pitch); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 static void GL_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 static void GL_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
76 int numrects, const SDL_Rect * rects); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
77 static int GL_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
78 Uint8 a, const SDL_Rect * rect); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 static int GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
80 const SDL_Rect * srcrect, const SDL_Rect * dstrect); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 static void GL_RenderPresent(SDL_Renderer * renderer); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 static void GL_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 static void GL_DestroyRenderer(SDL_Renderer * renderer); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
86 SDL_RenderDriver GL_RenderDriver = { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
87 GL_CreateRenderer, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
88 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 "opengl", |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
90 (SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_PRESENTDISCARD | |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
91 SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED), |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
92 (SDL_TEXTUREMODULATE_NONE | SDL_TEXTUREMODULATE_COLOR | |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
93 SDL_TEXTUREMODULATE_ALPHA), |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
94 (SDL_TEXTUREBLENDMODE_NONE | SDL_TEXTUREBLENDMODE_MASK | |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
95 SDL_TEXTUREBLENDMODE_BLEND | SDL_TEXTUREBLENDMODE_ADD | |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
96 SDL_TEXTUREBLENDMODE_MOD), |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
97 (SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_FAST | |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
98 SDL_TEXTURESCALEMODE_SLOW), |
2813
49243a6e9ff1
Removed the hacky stuff for YUV OpenGL textures, since Ryan's pixel shader code
Sam Lantinga <slouken@libsdl.org>
parents:
2812
diff
changeset
|
99 15, |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
101 SDL_PIXELFORMAT_INDEX1LSB, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
102 SDL_PIXELFORMAT_INDEX1MSB, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
103 SDL_PIXELFORMAT_INDEX8, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
104 SDL_PIXELFORMAT_RGB332, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
105 SDL_PIXELFORMAT_RGB444, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
106 SDL_PIXELFORMAT_RGB555, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
107 SDL_PIXELFORMAT_ARGB4444, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
108 SDL_PIXELFORMAT_ARGB1555, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
109 SDL_PIXELFORMAT_RGB565, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
110 SDL_PIXELFORMAT_RGB24, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
111 SDL_PIXELFORMAT_BGR24, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
112 SDL_PIXELFORMAT_RGB888, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
113 SDL_PIXELFORMAT_BGR888, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
114 SDL_PIXELFORMAT_ARGB8888, |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
115 SDL_PIXELFORMAT_ABGR8888, |
2813
49243a6e9ff1
Removed the hacky stuff for YUV OpenGL textures, since Ryan's pixel shader code
Sam Lantinga <slouken@libsdl.org>
parents:
2812
diff
changeset
|
116 SDL_PIXELFORMAT_ARGB2101010}, |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
117 0, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
118 0} |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
119 }; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
120 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
121 typedef struct |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
122 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
123 SDL_GLContext context; |
2233
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
124 SDL_bool GL_ARB_texture_rectangle_supported; |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
125 SDL_bool GL_EXT_paletted_texture_supported; |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
126 int blendMode; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
127 int scaleMode; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
128 |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
129 /* OpenGL functions */ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
130 #define SDL_PROC(ret,func,params) ret (APIENTRY *func) params; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
131 #include "SDL_glfuncs.h" |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
132 #undef SDL_PROC |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
133 |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
134 PFNGLCOLORTABLEEXTPROC glColorTableEXT; |
2233
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
135 void (*glTextureRangeAPPLE) (GLenum target, GLsizei length, |
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
136 const GLvoid * pointer); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
137 } GL_RenderData; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
138 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
139 typedef struct |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
140 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
141 GLuint texture; |
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:
1919
diff
changeset
|
142 GLenum type; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
143 GLfloat texw; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
144 GLfloat texh; |
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:
1919
diff
changeset
|
145 GLenum format; |
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:
1919
diff
changeset
|
146 GLenum formattype; |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
147 Uint8 *palette; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
148 void *pixels; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
149 int pitch; |
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:
1919
diff
changeset
|
150 SDL_DirtyRectList dirty; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
151 } GL_TextureData; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
152 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
153 |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
154 static void |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
155 GL_SetError(const char *prefix, GLenum result) |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
156 { |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
157 const char *error; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
158 |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
159 switch (result) { |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
160 case GL_NO_ERROR: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
161 error = "GL_NO_ERROR"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
162 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
163 case GL_INVALID_ENUM: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
164 error = "GL_INVALID_ENUM"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
165 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
166 case GL_INVALID_VALUE: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
167 error = "GL_INVALID_VALUE"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
168 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
169 case GL_INVALID_OPERATION: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
170 error = "GL_INVALID_OPERATION"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
171 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
172 case GL_STACK_OVERFLOW: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
173 error = "GL_STACK_OVERFLOW"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
174 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
175 case GL_STACK_UNDERFLOW: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
176 error = "GL_STACK_UNDERFLOW"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
177 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
178 case GL_OUT_OF_MEMORY: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
179 error = "GL_OUT_OF_MEMORY"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
180 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
181 case GL_TABLE_TOO_LARGE: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
182 error = "GL_TABLE_TOO_LARGE"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
183 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
184 default: |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
185 error = "UNKNOWN"; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
186 break; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
187 } |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
188 SDL_SetError("%s: %s", prefix, error); |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
189 } |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
190 |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
191 static int |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
192 GL_LoadFunctions(GL_RenderData * data) |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
193 { |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
194 #if defined(__QNXNTO__) && (_NTO_VERSION < 630) |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
195 #define __SDL_NOGETPROCADDR__ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
196 #elif defined(__MINT__) |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
197 #define __SDL_NOGETPROCADDR__ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
198 #endif |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
199 #ifdef __SDL_NOGETPROCADDR__ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
200 #define SDL_PROC(ret,func,params) data->func=func; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
201 #else |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
202 #define SDL_PROC(ret,func,params) \ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
203 do { \ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
204 data->func = SDL_GL_GetProcAddress(#func); \ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
205 if ( ! data->func ) { \ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
206 SDL_SetError("Couldn't load GL function %s: %s\n", #func, SDL_GetError()); \ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
207 return -1; \ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
208 } \ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
209 } while ( 0 ); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
210 #endif /* __SDL_NOGETPROCADDR__ */ |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
211 |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
212 #include "SDL_glfuncs.h" |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
213 #undef SDL_PROC |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
214 return 0; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
215 } |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
216 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
217 void |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
218 GL_AddRenderDriver(_THIS) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
219 { |
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:
1919
diff
changeset
|
220 if (_this->GL_CreateContext) { |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
221 SDL_AddRenderDriver(0, &GL_RenderDriver); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
222 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
223 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
224 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
225 SDL_Renderer * |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
226 GL_CreateRenderer(SDL_Window * window, Uint32 flags) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
227 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
228 SDL_Renderer *renderer; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
229 GL_RenderData *data; |
1952
420716272158
Implemented X11 OpenGL support.
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
230 GLint value; |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
231 int doublebuffer; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
232 |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
233 /* Render directly to the window, unless we're compositing */ |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
234 #ifndef __MACOSX__ |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
235 if (flags & SDL_RENDERER_SINGLEBUFFER) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
236 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
237 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
238 #endif |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
239 if (!(window->flags & SDL_WINDOW_OPENGL)) { |
1928
861bc36f0ab3
Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents:
1927
diff
changeset
|
240 if (SDL_RecreateWindow(window, window->flags | SDL_WINDOW_OPENGL) < 0) { |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
241 return NULL; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
242 } |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
243 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
244 |
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:
1919
diff
changeset
|
245 renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(*renderer)); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
246 if (!renderer) { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
247 SDL_OutOfMemory(); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
248 return NULL; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
249 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
250 |
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:
1919
diff
changeset
|
251 data = (GL_RenderData *) SDL_calloc(1, sizeof(*data)); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
252 if (!data) { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
253 GL_DestroyRenderer(renderer); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
254 SDL_OutOfMemory(); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
255 return NULL; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
256 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
257 |
1923
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
258 renderer->ActivateRenderer = GL_ActivateRenderer; |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
259 renderer->DisplayModeChanged = GL_DisplayModeChanged; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
260 renderer->CreateTexture = GL_CreateTexture; |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
261 renderer->QueryTexturePixels = GL_QueryTexturePixels; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
262 renderer->SetTexturePalette = GL_SetTexturePalette; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
263 renderer->GetTexturePalette = GL_GetTexturePalette; |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
264 renderer->SetTextureColorMod = GL_SetTextureColorMod; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
265 renderer->SetTextureAlphaMod = GL_SetTextureAlphaMod; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
266 renderer->SetTextureBlendMode = GL_SetTextureBlendMode; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
267 renderer->SetTextureScaleMode = GL_SetTextureScaleMode; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
268 renderer->UpdateTexture = GL_UpdateTexture; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
269 renderer->LockTexture = GL_LockTexture; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
270 renderer->UnlockTexture = GL_UnlockTexture; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
271 renderer->DirtyTexture = GL_DirtyTexture; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
272 renderer->RenderFill = GL_RenderFill; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
273 renderer->RenderCopy = GL_RenderCopy; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
274 renderer->RenderPresent = GL_RenderPresent; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
275 renderer->DestroyTexture = GL_DestroyTexture; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
276 renderer->DestroyRenderer = GL_DestroyRenderer; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
277 renderer->info = GL_RenderDriver.info; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
278 renderer->window = window->id; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
279 renderer->driverdata = data; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
280 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
281 renderer->info.flags = |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
282 (SDL_RENDERER_PRESENTDISCARD | SDL_RENDERER_ACCELERATED); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
283 |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
284 if (GL_LoadFunctions(data) < 0) { |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
285 GL_DestroyRenderer(renderer); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
286 return NULL; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
287 } |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
288 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
289 data->context = SDL_GL_CreateContext(window->id); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
290 if (!data->context) { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
291 GL_DestroyRenderer(renderer); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
292 return NULL; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
293 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
294 if (SDL_GL_MakeCurrent(window->id, data->context) < 0) { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
295 GL_DestroyRenderer(renderer); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
296 return NULL; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
297 } |
2246
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
298 #ifdef __MACOSX__ |
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
299 /* Enable multi-threaded rendering */ |
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
300 /* Disabled until Ryan finishes his VBO/PBO code... |
2295
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
301 CGLEnable(CGLGetCurrentContext(), kCGLCEMPEngine); |
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
302 */ |
2246
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
303 #endif |
75daa0792bd1
Added code to enable multi-threaded OpenGL on Mac OS X, pending Ryan's PBO/VBO
Sam Lantinga <slouken@libsdl.org>
parents:
2237
diff
changeset
|
304 |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
305 if (flags & SDL_RENDERER_PRESENTVSYNC) { |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
306 SDL_GL_SetSwapInterval(1); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
307 } else { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
308 SDL_GL_SetSwapInterval(0); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
309 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
310 if (SDL_GL_GetSwapInterval() > 0) { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
311 renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
312 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
313 |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
314 if (SDL_GL_GetAttribute(SDL_GL_DOUBLEBUFFER, &doublebuffer) == 0) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
315 if (!doublebuffer) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
316 renderer->info.flags |= SDL_RENDERER_SINGLEBUFFER; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
317 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
318 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
319 |
1952
420716272158
Implemented X11 OpenGL support.
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
320 data->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &value); |
420716272158
Implemented X11 OpenGL support.
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
321 renderer->info.max_texture_width = value; |
420716272158
Implemented X11 OpenGL support.
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
322 data->glGetIntegerv(GL_MAX_TEXTURE_SIZE, &value); |
420716272158
Implemented X11 OpenGL support.
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
323 renderer->info.max_texture_height = value; |
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:
1919
diff
changeset
|
324 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
325 if (SDL_GL_ExtensionSupported("GL_ARB_texture_rectangle") |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
326 || SDL_GL_ExtensionSupported("GL_EXT_texture_rectangle")) { |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
327 data->GL_ARB_texture_rectangle_supported = SDL_TRUE; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
328 } |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
329 if (SDL_GL_ExtensionSupported("GL_EXT_paletted_texture")) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
330 data->GL_EXT_paletted_texture_supported = SDL_TRUE; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
331 data->glColorTableEXT = |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
332 (PFNGLCOLORTABLEEXTPROC) SDL_GL_GetProcAddress("glColorTableEXT"); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
333 } else { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
334 /* Don't advertise support for 8-bit indexed texture format */ |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
335 Uint32 i, j; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
336 SDL_RendererInfo *info = &renderer->info; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
337 for (i = 0, j = 0; i < info->num_texture_formats; ++i) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
338 if (info->texture_formats[i] != SDL_PIXELFORMAT_INDEX8) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
339 info->texture_formats[j++] = info->texture_formats[i]; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
340 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
341 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
342 --info->num_texture_formats; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
343 } |
2233
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
344 if (SDL_GL_ExtensionSupported("GL_APPLE_texture_range")) { |
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
345 data->glTextureRangeAPPLE = |
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
346 (void (*)(GLenum, GLsizei, const GLvoid *)) |
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
347 SDL_GL_GetProcAddress("glTextureRangeAPPLE"); |
fb01ee9716bc
Test using glTextureRangeAPPLE
Sam Lantinga <slouken@libsdl.org>
parents:
2230
diff
changeset
|
348 } |
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:
1919
diff
changeset
|
349 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
350 /* Set up parameters for rendering */ |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
351 data->blendMode = -1; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
352 data->scaleMode = -1; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
353 data->glDisable(GL_DEPTH_TEST); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
354 data->glDisable(GL_CULL_FACE); |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
355 if (data->GL_ARB_texture_rectangle_supported) { |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
356 data->glEnable(GL_TEXTURE_RECTANGLE_ARB); |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
357 } else { |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
358 data->glEnable(GL_TEXTURE_2D); |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
359 } |
2832
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
360 data->glMatrixMode(GL_PROJECTION); |
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
361 data->glLoadIdentity(); |
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
362 data->glMatrixMode(GL_MODELVIEW); |
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
363 data->glLoadIdentity(); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
364 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
365 return renderer; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
366 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
367 |
1923
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
368 static int |
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
369 GL_ActivateRenderer(SDL_Renderer * renderer) |
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
370 { |
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
371 GL_RenderData *data = (GL_RenderData *) renderer->driverdata; |
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
372 SDL_Window *window = SDL_GetWindowFromID(renderer->window); |
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
373 |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
374 if (SDL_GL_MakeCurrent(window->id, data->context) < 0) { |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
375 return -1; |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
376 } |
2832
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
377 data->glViewport(0, 0, window->w, window->h); |
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
378 data->glOrtho(0.0, (GLdouble) window->w, (GLdouble) window->h, 0.0, 0.0, |
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
379 1.0); |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
380 return 0; |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
381 } |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
382 |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
383 static int |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
384 GL_DisplayModeChanged(SDL_Renderer * renderer) |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
385 { |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
386 GL_RenderData *data = (GL_RenderData *) renderer->driverdata; |
2832
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
387 SDL_Window *window = SDL_GetWindowFromID(renderer->window); |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
388 |
2832
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
389 data->glViewport(0, 0, window->w, window->h); |
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
390 data->glOrtho(0.0, (GLdouble) window->w, (GLdouble) window->h, 0.0, 0.0, |
0379769e8caa
The matrices have already been set, so you don't have to re-set them.
Sam Lantinga <slouken@libsdl.org>
parents:
2813
diff
changeset
|
391 1.0); |
1923
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
392 } |
d4572b97b08f
Switch OpenGL contexts when switching render contexts.
Sam Lantinga <slouken@libsdl.org>
parents:
1922
diff
changeset
|
393 |
1922
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
394 static __inline__ int |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
395 power_of_2(int input) |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
396 { |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
397 int value = 1; |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
398 |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
399 while (value < input) { |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
400 value <<= 1; |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
401 } |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
402 return value; |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
403 } |
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
404 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
405 static int |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
406 GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
407 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
408 GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
409 SDL_Window *window = SDL_GetWindowFromID(renderer->window); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
410 GL_TextureData *data; |
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:
1919
diff
changeset
|
411 GLint internalFormat; |
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:
1919
diff
changeset
|
412 GLenum format, type; |
1922
4905cac7a4bd
Fixed OpenGL blend modes, added power of 2 texture code
Sam Lantinga <slouken@libsdl.org>
parents:
1921
diff
changeset
|
413 int texture_w, texture_h; |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
414 GLenum result; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
415 |
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:
1919
diff
changeset
|
416 switch (texture->format) { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
417 case SDL_PIXELFORMAT_INDEX1LSB: |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
418 case SDL_PIXELFORMAT_INDEX1MSB: |
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:
1919
diff
changeset
|
419 internalFormat = GL_RGB; |
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:
1919
diff
changeset
|
420 format = GL_COLOR_INDEX; |
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:
1919
diff
changeset
|
421 type = GL_BITMAP; |
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:
1919
diff
changeset
|
422 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
423 case SDL_PIXELFORMAT_INDEX8: |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
424 if (!renderdata->GL_EXT_paletted_texture_supported) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
425 SDL_SetError("Unsupported texture format"); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
426 return -1; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
427 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
428 internalFormat = GL_COLOR_INDEX8_EXT; |
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:
1919
diff
changeset
|
429 format = GL_COLOR_INDEX; |
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:
1919
diff
changeset
|
430 type = GL_UNSIGNED_BYTE; |
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:
1919
diff
changeset
|
431 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
432 case SDL_PIXELFORMAT_RGB332: |
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:
1919
diff
changeset
|
433 internalFormat = GL_R3_G3_B2; |
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:
1919
diff
changeset
|
434 format = GL_RGB; |
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:
1919
diff
changeset
|
435 type = GL_UNSIGNED_BYTE_3_3_2; |
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:
1919
diff
changeset
|
436 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
437 case SDL_PIXELFORMAT_RGB444: |
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:
1919
diff
changeset
|
438 internalFormat = GL_RGB4; |
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:
1919
diff
changeset
|
439 format = GL_RGB; |
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:
1919
diff
changeset
|
440 type = GL_UNSIGNED_SHORT_4_4_4_4; |
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:
1919
diff
changeset
|
441 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
442 case SDL_PIXELFORMAT_RGB555: |
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:
1919
diff
changeset
|
443 internalFormat = GL_RGB5; |
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:
1919
diff
changeset
|
444 format = GL_RGB; |
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:
1919
diff
changeset
|
445 type = GL_UNSIGNED_SHORT_5_5_5_1; |
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:
1919
diff
changeset
|
446 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
447 case SDL_PIXELFORMAT_ARGB4444: |
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:
1919
diff
changeset
|
448 internalFormat = GL_RGBA4; |
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:
1919
diff
changeset
|
449 format = GL_BGRA; |
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:
1919
diff
changeset
|
450 type = GL_UNSIGNED_SHORT_4_4_4_4_REV; |
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:
1919
diff
changeset
|
451 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
452 case SDL_PIXELFORMAT_ARGB1555: |
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:
1919
diff
changeset
|
453 internalFormat = GL_RGB5_A1; |
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:
1919
diff
changeset
|
454 format = GL_BGRA; |
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:
1919
diff
changeset
|
455 type = GL_UNSIGNED_SHORT_1_5_5_5_REV; |
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:
1919
diff
changeset
|
456 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
457 case SDL_PIXELFORMAT_RGB565: |
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:
1919
diff
changeset
|
458 internalFormat = GL_RGB8; |
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:
1919
diff
changeset
|
459 format = GL_RGB; |
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:
1919
diff
changeset
|
460 type = GL_UNSIGNED_SHORT_5_6_5; |
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:
1919
diff
changeset
|
461 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
462 case SDL_PIXELFORMAT_RGB24: |
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:
1919
diff
changeset
|
463 internalFormat = GL_RGB8; |
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:
1919
diff
changeset
|
464 format = GL_RGB; |
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:
1919
diff
changeset
|
465 type = GL_UNSIGNED_BYTE; |
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:
1919
diff
changeset
|
466 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
467 case SDL_PIXELFORMAT_RGB888: |
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:
1919
diff
changeset
|
468 internalFormat = GL_RGB8; |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
469 format = GL_BGRA; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
470 type = GL_UNSIGNED_BYTE; |
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:
1919
diff
changeset
|
471 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
472 case SDL_PIXELFORMAT_BGR24: |
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:
1919
diff
changeset
|
473 internalFormat = GL_RGB8; |
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:
1919
diff
changeset
|
474 format = GL_BGR; |
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:
1919
diff
changeset
|
475 type = GL_UNSIGNED_BYTE; |
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:
1919
diff
changeset
|
476 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
477 case SDL_PIXELFORMAT_BGR888: |
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:
1919
diff
changeset
|
478 internalFormat = GL_RGB8; |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
479 format = GL_RGBA; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
480 type = GL_UNSIGNED_BYTE; |
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:
1919
diff
changeset
|
481 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
482 case SDL_PIXELFORMAT_ARGB8888: |
2230
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
483 #ifdef __MACOSX__ |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
484 internalFormat = GL_RGBA; |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
485 format = GL_BGRA; |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
486 type = GL_UNSIGNED_INT_8_8_8_8_REV; |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
487 #else |
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:
1919
diff
changeset
|
488 internalFormat = GL_RGBA8; |
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:
1919
diff
changeset
|
489 format = GL_BGRA; |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
490 type = GL_UNSIGNED_BYTE; |
2230
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
491 #endif |
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:
1919
diff
changeset
|
492 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
493 case SDL_PIXELFORMAT_ABGR8888: |
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:
1919
diff
changeset
|
494 internalFormat = GL_RGBA8; |
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:
1919
diff
changeset
|
495 format = GL_RGBA; |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
496 type = GL_UNSIGNED_BYTE; |
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:
1919
diff
changeset
|
497 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
498 case SDL_PIXELFORMAT_ARGB2101010: |
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:
1919
diff
changeset
|
499 internalFormat = GL_RGB10_A2; |
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:
1919
diff
changeset
|
500 format = GL_BGRA; |
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:
1919
diff
changeset
|
501 type = GL_UNSIGNED_INT_2_10_10_10_REV; |
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:
1919
diff
changeset
|
502 break; |
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:
1919
diff
changeset
|
503 default: |
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:
1919
diff
changeset
|
504 SDL_SetError("Unsupported texture format"); |
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:
1919
diff
changeset
|
505 return -1; |
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:
1919
diff
changeset
|
506 } |
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:
1919
diff
changeset
|
507 |
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:
1919
diff
changeset
|
508 data = (GL_TextureData *) SDL_calloc(1, sizeof(*data)); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
509 if (!data) { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
510 SDL_OutOfMemory(); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
511 return -1; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
512 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
513 |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
514 if (texture->format == SDL_PIXELFORMAT_INDEX8) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
515 data->palette = (Uint8 *) SDL_malloc(3 * 256 * sizeof(Uint8)); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
516 if (!data->palette) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
517 SDL_OutOfMemory(); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
518 SDL_free(data); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
519 return -1; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
520 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
521 SDL_memset(data->palette, 0xFF, 3 * 256 * sizeof(Uint8)); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
522 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
523 |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
524 if (texture->access == SDL_TEXTUREACCESS_STREAMING) { |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
525 data->pitch = texture->w * SDL_BYTESPERPIXEL(texture->format); |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
526 data->pixels = SDL_malloc(texture->h * data->pitch); |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
527 if (!data->pixels) { |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
528 SDL_OutOfMemory(); |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
529 SDL_free(data); |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
530 return -1; |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
531 } |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
532 } |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
533 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
534 texture->driverdata = data; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
535 |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
536 renderdata->glGetError(); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
537 renderdata->glGenTextures(1, &data->texture); |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
538 if (renderdata->GL_ARB_texture_rectangle_supported) { |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
539 data->type = GL_TEXTURE_RECTANGLE_ARB; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
540 texture_w = texture->w; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
541 texture_h = texture->h; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
542 data->texw = (GLfloat) texture->w; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
543 data->texh = (GLfloat) texture->h; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
544 } else { |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
545 data->type = GL_TEXTURE_2D; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
546 texture_w = power_of_2(texture->w); |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
547 texture_h = power_of_2(texture->h); |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
548 data->texw = (GLfloat) texture->w / texture_w; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
549 data->texh = (GLfloat) texture->h / texture_h; |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
550 } |
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:
1919
diff
changeset
|
551 data->format = format; |
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:
1919
diff
changeset
|
552 data->formattype = type; |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
553 renderdata->glBindTexture(data->type, data->texture); |
2230
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
554 renderdata->glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
555 GL_NEAREST); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
556 renderdata->glTexParameteri(data->type, GL_TEXTURE_MAG_FILTER, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
557 GL_NEAREST); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
558 renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
559 GL_CLAMP_TO_EDGE); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
560 renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
561 GL_CLAMP_TO_EDGE); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
562 #ifdef __MACOSX__ |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
563 #ifndef GL_TEXTURE_STORAGE_HINT_APPLE |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
564 #define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
565 #endif |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
566 #ifndef STORAGE_CACHED_APPLE |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
567 #define STORAGE_CACHED_APPLE 0x85BE |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
568 #endif |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
569 #ifndef STORAGE_SHARED_APPLE |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
570 #define STORAGE_SHARED_APPLE 0x85BF |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
571 #endif |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
572 if (texture->access == SDL_TEXTUREACCESS_STREAMING) { |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
573 renderdata->glTexParameteri(data->type, GL_TEXTURE_STORAGE_HINT_APPLE, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
574 GL_STORAGE_SHARED_APPLE); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
575 } else { |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
576 renderdata->glTexParameteri(data->type, GL_TEXTURE_STORAGE_HINT_APPLE, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
577 GL_STORAGE_CACHED_APPLE); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
578 } |
2809
7e257c3a3bf0
Temporary fix for Mac OS X crash in textoverlay
Sam Lantinga <slouken@libsdl.org>
parents:
2808
diff
changeset
|
579 /* This causes a crash in testoverlay for some reason. Apple bug? */ |
7e257c3a3bf0
Temporary fix for Mac OS X crash in textoverlay
Sam Lantinga <slouken@libsdl.org>
parents:
2808
diff
changeset
|
580 #if 0 |
2295
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
581 if (texture->access == SDL_TEXTUREACCESS_STREAMING |
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
582 && texture->format == SDL_PIXELFORMAT_ARGB8888) { |
2237
e57a883ffa86
Advertise the most efficient format for the screen. Of course SDL code needs
Sam Lantinga <slouken@libsdl.org>
parents:
2236
diff
changeset
|
583 /* |
2295
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
584 if (renderdata->glTextureRangeAPPLE) { |
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
585 renderdata->glTextureRangeAPPLE(data->type, |
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
586 texture->h * data->pitch, |
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
587 data->pixels); |
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
588 } |
dbc6d1893869
Checking in Christian Walther's patch for x11 keyboard input. Minor code tweaks by Bob.
Bob Pendleton <bob@pendleton.com>
parents:
2275
diff
changeset
|
589 */ |
2230
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
590 renderdata->glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
591 renderdata->glTexImage2D(data->type, 0, internalFormat, texture_w, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
592 texture_h, 0, format, type, data->pixels); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
593 } else |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
594 #endif |
2809
7e257c3a3bf0
Temporary fix for Mac OS X crash in textoverlay
Sam Lantinga <slouken@libsdl.org>
parents:
2808
diff
changeset
|
595 #endif |
2230
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
596 { |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
597 renderdata->glTexImage2D(data->type, 0, internalFormat, texture_w, |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
598 texture_h, 0, format, type, NULL); |
9b7d29d2432b
Optimized OpenGL renderer for Mac OS X.
Sam Lantinga <slouken@libsdl.org>
parents:
2222
diff
changeset
|
599 } |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
600 result = renderdata->glGetError(); |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
601 if (result != GL_NO_ERROR) { |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
602 GL_SetError("glTexImage2D()", result); |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
603 return -1; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
604 } |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
605 return 0; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
606 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
607 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
608 static int |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
609 GL_QueryTexturePixels(SDL_Renderer * renderer, SDL_Texture * texture, |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
610 void **pixels, int *pitch) |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
611 { |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
612 GL_TextureData *data = (GL_TextureData *) texture->driverdata; |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
613 |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
614 *pixels = data->pixels; |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
615 *pitch = data->pitch; |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
616 return 0; |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
617 } |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
618 |
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
1986
diff
changeset
|
619 static int |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
620 GL_SetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
621 const SDL_Color * colors, int firstcolor, int ncolors) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
622 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
623 GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
624 GL_TextureData *data = (GL_TextureData *) texture->driverdata; |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
625 Uint8 *palette; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
626 |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
627 if (!data->palette) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
628 SDL_SetError("Texture doesn't have a palette"); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
629 return -1; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
630 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
631 palette = data->palette + firstcolor * 3; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
632 while (ncolors--) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
633 *palette++ = colors->r; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
634 *palette++ = colors->g; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
635 *palette++ = colors->b; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
636 ++colors; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
637 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
638 renderdata->glBindTexture(data->type, data->texture); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
639 renderdata->glColorTableEXT(data->type, GL_RGB8, 256, GL_RGB, |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
640 GL_UNSIGNED_BYTE, data->palette); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
641 return 0; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
642 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
643 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
644 static int |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
645 GL_GetTexturePalette(SDL_Renderer * renderer, SDL_Texture * texture, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
646 SDL_Color * colors, int firstcolor, int ncolors) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
647 { |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
648 GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
649 GL_TextureData *data = (GL_TextureData *) texture->driverdata; |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
650 Uint8 *palette; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
651 |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
652 if (!data->palette) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
653 SDL_SetError("Texture doesn't have a palette"); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
654 return -1; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
655 } |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
656 palette = data->palette + firstcolor * 3; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
657 while (ncolors--) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
658 colors->r = *palette++; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
659 colors->g = *palette++; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
660 colors->b = *palette++; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
661 colors->unused = SDL_ALPHA_OPAQUE; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
662 ++colors; |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
663 } |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
664 return 0; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
665 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
666 |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
667 static void |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
668 SetupTextureUpdate(GL_RenderData * renderdata, SDL_Texture * texture, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
669 int pitch) |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
670 { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
671 if (texture->format == SDL_PIXELFORMAT_INDEX1LSB) { |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
672 renderdata->glPixelStorei(GL_UNPACK_LSB_FIRST, 1); |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
673 } else if (texture->format == SDL_PIXELFORMAT_INDEX1MSB) { |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
674 renderdata->glPixelStorei(GL_UNPACK_LSB_FIRST, 0); |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
675 } |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
676 renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1); |
2808
368410632f2d
Whoops, we need this for subrect updates (testsprite)
Sam Lantinga <slouken@libsdl.org>
parents:
2804
diff
changeset
|
677 renderdata->glPixelStorei(GL_UNPACK_ROW_LENGTH, |
368410632f2d
Whoops, we need this for subrect updates (testsprite)
Sam Lantinga <slouken@libsdl.org>
parents:
2804
diff
changeset
|
678 pitch / SDL_BYTESPERPIXEL(texture->format)); |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
679 } |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
680 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
681 static int |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
682 GL_SetTextureColorMod(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
683 { |
1986
f4c65e3bfaed
Cleanup for the last checkin
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
684 return 0; |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
685 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
686 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
687 static int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
688 GL_SetTextureAlphaMod(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
689 { |
1986
f4c65e3bfaed
Cleanup for the last checkin
Sam Lantinga <slouken@libsdl.org>
parents:
1985
diff
changeset
|
690 return 0; |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
691 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
692 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
693 static int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
694 GL_SetTextureBlendMode(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
695 { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
696 switch (texture->blendMode) { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
697 case SDL_TEXTUREBLENDMODE_NONE: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
698 case SDL_TEXTUREBLENDMODE_MASK: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
699 case SDL_TEXTUREBLENDMODE_BLEND: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
700 case SDL_TEXTUREBLENDMODE_ADD: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
701 case SDL_TEXTUREBLENDMODE_MOD: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
702 return 0; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
703 default: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
704 SDL_Unsupported(); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
705 texture->blendMode = SDL_TEXTUREBLENDMODE_NONE; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
706 return -1; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
707 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
708 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
709 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
710 static int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
711 GL_SetTextureScaleMode(SDL_Renderer * renderer, SDL_Texture * texture) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
712 { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
713 switch (texture->scaleMode) { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
714 case SDL_TEXTURESCALEMODE_NONE: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
715 case SDL_TEXTURESCALEMODE_FAST: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
716 case SDL_TEXTURESCALEMODE_SLOW: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
717 return 0; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
718 case SDL_TEXTURESCALEMODE_BEST: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
719 SDL_Unsupported(); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
720 texture->scaleMode = SDL_TEXTURESCALEMODE_SLOW; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
721 return -1; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
722 default: |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
723 SDL_Unsupported(); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
724 texture->scaleMode = SDL_TEXTURESCALEMODE_NONE; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
725 return -1; |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
726 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
727 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
728 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
729 static int |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
730 GL_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
731 const SDL_Rect * rect, const void *pixels, int pitch) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
732 { |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
733 GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
734 GL_TextureData *data = (GL_TextureData *) texture->driverdata; |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
735 GLenum result; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
736 |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
737 renderdata->glGetError(); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
738 SetupTextureUpdate(renderdata, texture, pitch); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
739 renderdata->glBindTexture(data->type, data->texture); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
740 renderdata->glTexSubImage2D(data->type, 0, rect->x, rect->y, rect->w, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
741 rect->h, data->format, data->formattype, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
742 pixels); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
743 result = renderdata->glGetError(); |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
744 if (result != GL_NO_ERROR) { |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
745 GL_SetError("glTexSubImage2D()", result); |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
746 return -1; |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
747 } |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
748 return 0; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
749 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
750 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
751 static int |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
752 GL_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
753 const SDL_Rect * rect, int markDirty, void **pixels, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
754 int *pitch) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
755 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
756 GL_TextureData *data = (GL_TextureData *) texture->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
757 |
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:
1919
diff
changeset
|
758 if (markDirty) { |
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:
1919
diff
changeset
|
759 SDL_AddDirtyRect(&data->dirty, rect); |
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:
1919
diff
changeset
|
760 } |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
761 |
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:
1919
diff
changeset
|
762 *pixels = |
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:
1919
diff
changeset
|
763 (void *) ((Uint8 *) data->pixels + rect->y * data->pitch + |
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:
1919
diff
changeset
|
764 rect->x * SDL_BYTESPERPIXEL(texture->format)); |
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:
1919
diff
changeset
|
765 *pitch = data->pitch; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
766 return 0; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
767 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
768 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
769 static void |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
770 GL_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
771 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
772 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
773 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
774 static void |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
775 GL_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, int numrects, |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
776 const SDL_Rect * rects) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
777 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
778 GL_TextureData *data = (GL_TextureData *) texture->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
779 int i; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
780 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
781 for (i = 0; i < numrects; ++i) { |
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:
1919
diff
changeset
|
782 SDL_AddDirtyRect(&data->dirty, &rects[i]); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
783 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
784 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
785 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
786 static int |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
787 GL_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
788 const SDL_Rect * rect) |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
789 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
790 GL_RenderData *data = (GL_RenderData *) renderer->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
791 SDL_Window *window = SDL_GetWindowFromID(renderer->window); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
792 |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
793 data->glClearColor((GLclampf) r * inv255f, (GLclampf) g * inv255f, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
794 (GLclampf) b * inv255f, (GLclampf) a * inv255f); |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
795 data->glViewport(rect->x, window->h - rect->y, rect->w, rect->h); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
796 data->glClear(GL_COLOR_BUFFER_BIT); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
797 data->glViewport(0, 0, window->w, window->h); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
798 return 0; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
799 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
800 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
801 static int |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
802 GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
803 const SDL_Rect * srcrect, const SDL_Rect * dstrect) |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
804 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
805 GL_RenderData *data = (GL_RenderData *) renderer->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
806 GL_TextureData *texturedata = (GL_TextureData *) texture->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
807 int minx, miny, maxx, maxy; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
808 GLfloat minu, maxu, minv, maxv; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
809 |
2275
12ea0fdc0df2
Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents:
2246
diff
changeset
|
810 if (texturedata->dirty.list) { |
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:
1919
diff
changeset
|
811 SDL_DirtyRect *dirty; |
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:
1919
diff
changeset
|
812 void *pixels; |
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:
1919
diff
changeset
|
813 int bpp = SDL_BYTESPERPIXEL(texture->format); |
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:
1919
diff
changeset
|
814 int pitch = texturedata->pitch; |
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:
1919
diff
changeset
|
815 |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
816 SetupTextureUpdate(data, texture, pitch); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
817 data->glBindTexture(texturedata->type, texturedata->texture); |
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:
1919
diff
changeset
|
818 for (dirty = texturedata->dirty.list; dirty; dirty = dirty->next) { |
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:
1919
diff
changeset
|
819 SDL_Rect *rect = &dirty->rect; |
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:
1919
diff
changeset
|
820 pixels = |
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:
1919
diff
changeset
|
821 (void *) ((Uint8 *) texturedata->pixels + rect->y * pitch + |
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:
1919
diff
changeset
|
822 rect->x * bpp); |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
823 data->glTexSubImage2D(texturedata->type, 0, rect->x, rect->y, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
824 rect->w, rect->h, texturedata->format, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
825 texturedata->formattype, pixels); |
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:
1919
diff
changeset
|
826 } |
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:
1919
diff
changeset
|
827 SDL_ClearDirtyRects(&texturedata->dirty); |
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:
1919
diff
changeset
|
828 } |
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:
1919
diff
changeset
|
829 |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
830 minx = dstrect->x; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
831 miny = dstrect->y; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
832 maxx = dstrect->x + dstrect->w; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
833 maxy = dstrect->y + dstrect->h; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
834 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
835 minu = (GLfloat) srcrect->x / texture->w; |
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:
1919
diff
changeset
|
836 minu *= texturedata->texw; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
837 maxu = (GLfloat) (srcrect->x + srcrect->w) / texture->w; |
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:
1919
diff
changeset
|
838 maxu *= texturedata->texw; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
839 minv = (GLfloat) srcrect->y / texture->h; |
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:
1919
diff
changeset
|
840 minv *= texturedata->texh; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
841 maxv = (GLfloat) (srcrect->y + srcrect->h) / texture->h; |
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:
1919
diff
changeset
|
842 maxv *= texturedata->texh; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
843 |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
844 data->glBindTexture(texturedata->type, texturedata->texture); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
845 |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
846 if (texture->modMode) { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
847 data->glColor4f((GLfloat) texture->r * inv255f, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
848 (GLfloat) texture->g * inv255f, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
849 (GLfloat) texture->b * inv255f, |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
850 (GLfloat) texture->a * inv255f); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
851 } else { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
852 data->glColor4f(1.0f, 1.0f, 1.0f, 1.0f); |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
853 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
854 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
855 if (texture->blendMode != data->blendMode) { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
856 switch (texture->blendMode) { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
857 case SDL_TEXTUREBLENDMODE_NONE: |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
858 data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
859 data->glDisable(GL_BLEND); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
860 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
861 case SDL_TEXTUREBLENDMODE_MASK: |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
862 case SDL_TEXTUREBLENDMODE_BLEND: |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
863 data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
864 data->glEnable(GL_BLEND); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
865 data->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
866 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
867 case SDL_TEXTUREBLENDMODE_ADD: |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
868 data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
869 data->glEnable(GL_BLEND); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
870 data->glBlendFunc(GL_SRC_ALPHA, GL_ONE); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
871 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
872 case SDL_TEXTUREBLENDMODE_MOD: |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
873 data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
874 data->glEnable(GL_BLEND); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
875 data->glBlendFunc(GL_ZERO, GL_SRC_COLOR); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
876 break; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
877 } |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
878 data->blendMode = texture->blendMode; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
879 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
880 |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
881 if (texture->scaleMode != data->scaleMode) { |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
882 switch (texture->scaleMode) { |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
883 case SDL_TEXTURESCALEMODE_NONE: |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
884 case SDL_TEXTURESCALEMODE_FAST: |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
885 data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
886 GL_NEAREST); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
887 data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
888 GL_NEAREST); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
889 break; |
1965
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
890 case SDL_TEXTURESCALEMODE_SLOW: |
a788656ca29a
SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
891 case SDL_TEXTURESCALEMODE_BEST: |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
892 data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
893 GL_LINEAR); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
894 data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER, |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
895 GL_LINEAR); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
896 break; |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
897 } |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1975
diff
changeset
|
898 data->scaleMode = texture->scaleMode; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
899 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
900 |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
901 data->glBegin(GL_TRIANGLE_STRIP); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
902 data->glTexCoord2f(minu, minv); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
903 data->glVertex2i(minx, miny); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
904 data->glTexCoord2f(maxu, minv); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
905 data->glVertex2i(maxx, miny); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
906 data->glTexCoord2f(minu, maxv); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
907 data->glVertex2i(minx, maxy); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
908 data->glTexCoord2f(maxu, maxv); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
909 data->glVertex2i(maxx, maxy); |
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
910 data->glEnd(); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
911 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
912 return 0; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
913 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
914 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
915 static void |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
916 GL_RenderPresent(SDL_Renderer * renderer) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
917 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
918 SDL_GL_SwapWindow(renderer->window); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
919 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
920 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
921 static void |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
922 GL_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
923 { |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
924 GL_RenderData *renderdata = (GL_RenderData *) renderer->driverdata; |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
925 GL_TextureData *data = (GL_TextureData *) texture->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
926 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
927 if (!data) { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
928 return; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
929 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
930 if (data->texture) { |
1927
aeb8263d377a
OpenGL renderer is feature complete!
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
931 renderdata->glDeleteTextures(1, &data->texture); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
932 } |
1974
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
933 if (data->palette) { |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
934 SDL_free(data->palette); |
70deaf574153
Added paletted OpenGL texture support.
Sam Lantinga <slouken@libsdl.org>
parents:
1970
diff
changeset
|
935 } |
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:
1919
diff
changeset
|
936 if (data->pixels) { |
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:
1919
diff
changeset
|
937 SDL_free(data->pixels); |
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:
1919
diff
changeset
|
938 } |
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:
1919
diff
changeset
|
939 SDL_FreeDirtyRects(&data->dirty); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
940 SDL_free(data); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
941 texture->driverdata = NULL; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
942 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
943 |
1975
ccef0d0c40c6
Added resize support for GDI and Direct3D renderers
Sam Lantinga <slouken@libsdl.org>
parents:
1974
diff
changeset
|
944 static void |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
945 GL_DestroyRenderer(SDL_Renderer * renderer) |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
946 { |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
947 GL_RenderData *data = (GL_RenderData *) renderer->driverdata; |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
948 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
949 if (data) { |
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:
1919
diff
changeset
|
950 if (data->context) { |
2328
91e601d9df8b
re: bug#563. checking in some commented out trace code and a fix so that the in testalpha.c the background only flashes when alpha == 255. The problem that is being
Bob Pendleton <bob@pendleton.com>
parents:
2295
diff
changeset
|
951 /* SDL_GL_MakeCurrent(0, NULL); *//* doesn't do anything */ |
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:
1919
diff
changeset
|
952 SDL_GL_DeleteContext(data->context); |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
953 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
954 SDL_free(data); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
955 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
956 SDL_free(renderer); |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
957 } |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
958 |
1952
420716272158
Implemented X11 OpenGL support.
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
959 #endif /* SDL_VIDEO_RENDER_OGL */ |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
960 |
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
961 /* vi: set ts=4 sw=4 expandtab: */ |