Mercurial > public > algo-animator
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 |
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 | 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). |
4 | |
5 ## Compile | |
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 | 10 |
11 ## To improve | |
12 | |
13 Since `GLUT` is single-thread, I cannot call `glutPostRedisplay()` within `while` or `for loops` to redraw the screen in every | |
14 step of the selected sorting algorithm. I guess the solution is multi-threading, so I can perform the sorting in the second thread | |
15 and post notifications to the main thread to redraw the screen. | |
16 | |
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, | |
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 | |
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. | |
20 | |
21 Let's say we selected `bubble sort`. Once you press `ENTER`, the process will be like this: | |
22 | |
23 ```c | |
24 run = true; | |
25 bubble_sort(); | |
26 glutPostRedisplay; | |
27 bubble_sort(); | |
28 glutPostRedisplay; | |
29 bubble_sort(); | |
30 glutPostRedisplay; | |
31 | |
32 // Continue until the array is sorted | |
33 run = false; | |
34 ``` |