I’m trying to make a program that draws parametric equations using SDL2, meaning that I want all points generated from the parametric equation to stay on screen. Here is my full code so far:
#include <iostream>
#include <SDL2/SDL.h>
#define WIDTH 600
#define HEIGHT 600
// parametric equation - this just draws a circle with radius 200 at the center of the screen.
int parametric(SDL_Renderer* renderer, const float t) {
float x = WIDTH / 2.0 + 200 * SDL_cos(t);
float y = HEIGHT / 2.0 + 200 * SDL_sin(t);
return SDL_RenderDrawPoint(renderer, (int)x, (int)y);
}
int main(int argc, char ** argv)
{
// variables
bool quit = false;
SDL_Event event;
float t = 0;
// init SDL
SDL_Init(SDL_INIT_VIDEO);
SDL_Window * window = SDL_CreateWindow("SDL2 test",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_METAL);
// init renderer
SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 0, 100, 255, 255);
t = 0;
// main loop
while (!quit)
{
SDL_PollEvent(&event);
switch (event.type)
{
case SDL_QUIT:
quit = true;
break;
default: ;
}
parametric(renderer, t);
SDL_RenderPresent(renderer);
t += 0.02;
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
However, when I run the code, this happens:
How can I make it so that SDL2 draws without having to clear the renderer
every frame?