aboutsummaryrefslogtreecommitdiff
path: root/graphics.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-08-27 19:04:34 +0200
committerCharles <sircharlesaze@gmail.com>2019-08-27 19:04:34 +0200
commitce5cf1b60dae81540b2db366b1408a961f771dcc (patch)
tree25de8dc9727deb188f57fe01c2cf7575d5fbb4bc /graphics.c
parent7c48d434f0a68ac47ebe1bd66daa2c86842979c7 (diff)
downloadmandelbrot_cpu-ce5cf1b60dae81540b2db366b1408a961f771dcc.tar.gz
mandelbrot_cpu-ce5cf1b60dae81540b2db366b1408a961f771dcc.tar.bz2
mandelbrot_cpu-ce5cf1b60dae81540b2db366b1408a961f771dcc.zip
Set visualization
Loop throught each pixel and color it black if its in the set, white otherwise. This is eavily inspired by the coding train video on the subject. (https://www.youtube.com/watch?v=6z7GQewK-Ks)
Diffstat (limited to 'graphics.c')
-rw-r--r--graphics.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/graphics.c b/graphics.c
index e9e12ff..1e7470f 100644
--- a/graphics.c
+++ b/graphics.c
@@ -4,6 +4,7 @@
#define WINDOW_X 20
#define WINDOW_Y 20
+static void update(GState *state);
static void event_handler(GState *state);
static void destroy_state(GState *state);
static void error_exit_state(GState *state, const char *msg);
@@ -17,7 +18,7 @@ GState *graphics_init(GConf *conf)
if (SDL_Init(SDL_INIT_VIDEO) < 0)
error_exit("unable to init SDL");
state->window = SDL_CreateWindow(WINDOW_TITLE, WINDOW_X, WINDOW_Y,
- conf->window_width, conf->window_height, 0);
+ WINDOW_W, WINDOW_H, 0);
if (state->window == NULL)
error_exit("unable to create window");
state->renderer = SDL_CreateRenderer(state->window, -1, 0);
@@ -38,9 +39,28 @@ void graphics_run(GState *state)
while (state->running)
{
event_handler(state);
+ update(state);
+ SDL_Delay(3);
+ }
+}
- SDL_Delay(10);
+static void update(GState *state)
+{
+ SDL_SetRenderDrawColor(state->renderer, 155, 155, 155, SDL_ALPHA_OPAQUE);
+ SDL_RenderClear(state->renderer);
+ for (int x = 0; x < WINDOW_W; x++)
+ {
+ for (int y = 0; y < WINDOW_H; y++)
+ {
+ if (mandelbrot_in_set(map_range((double)x, 0, WINDOW_W, LO, HI)
+ + map_range((double)y, 0, WINDOW_H, LO, HI) * I))
+ {
+ SDL_SetRenderDrawColor(state->renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
+ SDL_RenderDrawPoint(state->renderer, x, y);
+ }
+ }
}
+ SDL_RenderPresent(state->renderer);
}
static void event_handler(GState *state)