SDL_UpdateWindowSurface()
should be called whenever you have finished rendering the current frame in your back buffer and are ready to display it. Typically, this is done at the end of your game loop after all drawing operations:
#include <SDL.h>
int main(int argc, char** argv) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow(
"Update Example",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640, 480, 0);
SDL_Surface* surface = SDL_GetWindowSurface(
window);
while (true) {
// Render graphics to the surface here
SDL_FillRect(surface, NULL,
SDL_MapRGB(surface->format,
0x00, 0xFF, 0x00)); // Fill green
// Update the front buffer with what has
// been drawn on the back buffer
SDL_UpdateWindowSurface(window);
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
Answers to questions are automatically generated and may not have been reviewed.
Learn the essentials of double buffering in C++ with practical examples and SDL2 specifics to improve your graphics projects