|
@@ -12,7 +12,10 @@
|
|
|
This file is created by : Nitin Jain (nitin.j4\samsung.com)
|
|
|
*/
|
|
|
|
|
|
-/* Sample program: Draw a Chess Board by using SDL_CreateSoftwareRenderer API */
|
|
|
+/* Sample program: Draw a Chess Board by using the SDL render API */
|
|
|
+
|
|
|
+/* This allows testing SDL_CreateSoftwareRenderer with the window surface API. Undefine it to use the accelerated renderer instead. */
|
|
|
+#define USE_SOFTWARE_RENDERER
|
|
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
#include <SDL3/SDL_main.h>
|
|
@@ -24,9 +27,11 @@
|
|
|
|
|
|
static SDL_Window *window;
|
|
|
static SDL_Renderer *renderer;
|
|
|
-static SDL_Surface *surface;
|
|
|
static int done;
|
|
|
|
|
|
+#ifdef USE_SOFTWARE_RENDERER
|
|
|
+static SDL_Surface *surface;
|
|
|
+#endif
|
|
|
|
|
|
static void DrawChessBoard(void)
|
|
|
{
|
|
@@ -57,7 +62,6 @@ static void DrawChessBoard(void)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- SDL_RenderPresent(renderer);
|
|
|
}
|
|
|
|
|
|
static void loop(void)
|
|
@@ -65,6 +69,7 @@ static void loop(void)
|
|
|
SDL_Event e;
|
|
|
while (SDL_PollEvent(&e)) {
|
|
|
|
|
|
+#ifdef USE_SOFTWARE_RENDERER
|
|
|
/* Re-create when window surface has been resized */
|
|
|
if (e.type == SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED) {
|
|
|
|
|
@@ -76,6 +81,7 @@ static void loop(void)
|
|
|
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
|
|
|
SDL_RenderClear(renderer);
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
if (e.type == SDL_EVENT_QUIT) {
|
|
|
done = 1;
|
|
@@ -94,11 +100,19 @@ static void loop(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /* Clear the rendering surface with the specified color */
|
|
|
+ SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
|
|
|
+ SDL_RenderClear(renderer);
|
|
|
+
|
|
|
DrawChessBoard();
|
|
|
|
|
|
+ SDL_RenderPresent(renderer);
|
|
|
+
|
|
|
+#ifdef USE_SOFTWARE_RENDERER
|
|
|
/* Got everything on rendering surface,
|
|
|
now Update the drawing image on window screen */
|
|
|
SDL_UpdateWindowSurface(window);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
@@ -128,17 +142,17 @@ int main(int argc, char *argv[])
|
|
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window creation fail : %s\n", SDL_GetError());
|
|
|
return 1;
|
|
|
}
|
|
|
+#ifdef USE_SOFTWARE_RENDERER
|
|
|
surface = SDL_GetWindowSurface(window);
|
|
|
renderer = SDL_CreateSoftwareRenderer(surface);
|
|
|
+#else
|
|
|
+ renderer = SDL_CreateRenderer(window, NULL);
|
|
|
+#endif
|
|
|
if (!renderer) {
|
|
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Render creation for surface fail : %s\n", SDL_GetError());
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
- /* Clear the rendering surface with the specified color */
|
|
|
- SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
|
|
|
- SDL_RenderClear(renderer);
|
|
|
-
|
|
|
/* Draw the Image on rendering surface */
|
|
|
done = 0;
|
|
|
#ifdef SDL_PLATFORM_EMSCRIPTEN
|