12
12
This file is created by : Nitin Jain (nitin.j4@samsung.com)
13
13
*/
14
14
15
- /* Sample program: Draw a Chess Board by using SDL_CreateSoftwareRenderer API */
15
+ /* Sample program: Draw a Chess Board by using the SDL render API */
16
+
17
+ /* This allows testing SDL_CreateSoftwareRenderer with the window surface API. Undefine it to use the accelerated renderer instead. */
18
+ #define USE_SOFTWARE_RENDERER
16
19
17
20
#include <stdlib.h>
18
21
#include <stdio.h>
25
28
26
29
SDL_Window * window ;
27
30
SDL_Renderer * renderer ;
28
- SDL_Surface * surface ;
29
31
int done ;
30
32
33
+ #ifdef USE_SOFTWARE_RENDERER
34
+ SDL_Surface * surface ;
35
+ #endif
36
+
31
37
void DrawChessBoard (void )
32
38
{
33
39
int row = 0 , column = 0 , x = 0 ;
@@ -50,14 +56,14 @@ void DrawChessBoard(void)
50
56
SDL_RenderFillRect (renderer , & rect );
51
57
}
52
58
}
53
- SDL_RenderPresent (renderer );
54
59
}
55
60
56
61
void loop (void )
57
62
{
58
63
SDL_Event e ;
59
64
while (SDL_PollEvent (& e )) {
60
65
66
+ #ifdef USE_SOFTWARE_RENDERER
61
67
/* Re-create when window has been resized */
62
68
if ((e .type == SDL_WINDOWEVENT ) && (e .window .event == SDL_WINDOWEVENT_SIZE_CHANGED )) {
63
69
@@ -69,6 +75,7 @@ void loop(void)
69
75
SDL_SetRenderDrawColor (renderer , 0xFF , 0xFF , 0xFF , 0xFF );
70
76
SDL_RenderClear (renderer );
71
77
}
78
+ #endif
72
79
73
80
if (e .type == SDL_QUIT ) {
74
81
done = 1 ;
@@ -87,11 +94,19 @@ void loop(void)
87
94
}
88
95
}
89
96
97
+ /* Clear the rendering surface with the specified color */
98
+ SDL_SetRenderDrawColor (renderer , 0xFF , 0xFF , 0xFF , 0xFF );
99
+ SDL_RenderClear (renderer );
100
+
90
101
DrawChessBoard ();
91
102
103
+ SDL_RenderPresent (renderer );
104
+
105
+ #ifdef USE_SOFTWARE_RENDERER
92
106
/* Got everything on rendering surface,
93
107
now Update the drawing image on window screen */
94
108
SDL_UpdateWindowSurface (window );
109
+ #endif
95
110
}
96
111
97
112
int main (int argc , char * argv [])
@@ -111,17 +126,17 @@ int main(int argc, char *argv[])
111
126
SDL_LogError (SDL_LOG_CATEGORY_APPLICATION , "Window creation fail : %s\n" , SDL_GetError ());
112
127
return 1 ;
113
128
}
129
+ #ifdef USE_SOFTWARE_RENDERER
114
130
surface = SDL_GetWindowSurface (window );
115
131
renderer = SDL_CreateSoftwareRenderer (surface );
132
+ #else
133
+ renderer = SDL_CreateRenderer (window , -1 , 0 );
134
+ #endif
116
135
if (!renderer ) {
117
136
SDL_LogError (SDL_LOG_CATEGORY_APPLICATION , "Render creation for surface fail : %s\n" , SDL_GetError ());
118
137
return 1 ;
119
138
}
120
139
121
- /* Clear the rendering surface with the specified color */
122
- SDL_SetRenderDrawColor (renderer , 0xFF , 0xFF , 0xFF , 0xFF );
123
- SDL_RenderClear (renderer );
124
-
125
140
/* Draw the Image on rendering surface */
126
141
done = 0 ;
127
142
#ifdef __EMSCRIPTEN__
0 commit comments