annotate README.md @ 23:605e5e7d70e1

Rename LICENSE to LICENSE.md committer: GitHub <noreply@github.com>
author Dennis C. M. <dennis@denniscm.com>
date Tue, 27 Jun 2023 20:06:49 +0100
parents 8a5a7aee69ce
children bebd95177e96
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 # algo-animator
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
3 This project is inspired by - off course - the video by Timo Bingmann called [15 sorting algorithms in 6 minutes](https://www.youtube.com/watch?v=kPRA0W1kECg).
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
4
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
5 ## Compile
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
6
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7 ```bash
13
074bde2db09a printing text with custom font but incorrect letters
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
8 gcc main.c -lglut -lGL -lGLU -lm -I/usr/local/include/freetype2 -L/usr/local/lib -lfreetype
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9 ```
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
10
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
11 ## To improve
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
12
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
13 Since `GLUT` is single-thread, I cannot call `glutPostRedisplay()` within `while` or `for loops` to redraw the screen in every
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
14 step of the selected sorting algorithm. I guess the solution is multi-threading, so I can perform the sorting in the second thread
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
15 and post notifications to the main thread to redraw the screen.
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
16
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
17 Since this is my first OpenGL project and just my second program in C, I am tired and I don't want to spend more time in this project,
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
18 but maybe in the future I'll do it. Right now there are just two algorithms supported. I've implemented them in a way that every function
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
19 call is a single step of the sorting. So, storing the "state" outside the function, I can use `idle()` as the loop of the sorting algorithm.
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
20
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
21 Let's say we selected `bubble sort`. Once you press `ENTER`, the process will be like this:
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
22
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
23 ```c
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
24 run = true;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
25 bubble_sort();
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
26 glutPostRedisplay;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
27 bubble_sort();
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
28 glutPostRedisplay;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
29 bubble_sort();
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
30 glutPostRedisplay;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
31
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
32 // Continue until the array is sorted
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
33 run = false;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
34 ```