# 3D Graphics Programming from Scratch

**URL:** <https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240>\
**Category:** Learning Resources and Study Groups\
**Tags:** c, creative-coding, game-development\
**Created:** [April 14, 2020, 12:59am UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240 "2020-04-14T00:59:32Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Josh](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/josh/32/4_2.png) [@Josh](https://forum.codeselfstudy.com/u/Josh)\
**Post date:** [April 14, 2020, 12:59am UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/1 "2020-04-14T00:59:32Z")

</div>

**Note:** This thread was split from [Learn Assembly Language by Making Games for the Atari 2600](https://forum.codeselfstudy.com/t/learn-assembly-language-by-making-games-for-the-atari-2600/2082)

I got an email about the instructor’s new course. I’ve been searching for exactly this kind of content over the past few weeks, and just saw the email a few minutes ago. 🤯

[https://courses.pikuma.com/courses/learn-computer-graphics-programming](https://courses.pikuma.com/courses/learn-computer-graphics-programming)

Edit: he also has a course on raycasting. If you click through to his profile (or website) there are many interesting things there.

---

<div class="post-metadata">

**Author:** ![Josh](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/josh/32/4_2.png) [@Josh](https://forum.codeselfstudy.com/u/Josh)\
**Post date:** [April 16, 2020, 8:44am UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/2 "2020-04-16T08:44:27Z")

</div>

I started watching the 3D graphics programming videos and they are pretty interesting. It uses C and [SDL2](https://www.libsdl.org/).

I was curious about whether SDL code could run in WebAssembly (since C can compile to wasm), and I found [this blog post](https://www.jamesfmackenzie.com/2019/12/01/webassembly-graphics-with-sdl/):

> SDL 2.0 support is also included via [Emscripten Ports](https://github.com/emscripten-ports) - a collection of useful libraries, ported to Emscripten and integrated with the Emscripten compiler (emcc). This is an official, full release of SDL 2.0 - compatibility should be near 100%

He said that he was using C instead of C++ because it would make the ideas more portable to other languages. It looks like SDL works with [many languages](http://www.libsdl.org/languages.php) and on [many operating systems](https://wiki.libsdl.org/Introduction).

---

<div class="post-metadata">

**Author:** ![OutsourcedGuru](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/outsourcedguru/32/983_2.png) [@OutsourcedGuru](https://forum.codeselfstudy.com/u/OutsourcedGuru)\
**Post date:** [April 18, 2020, 1:43am UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/3 "2020-04-18T01:43:28Z")

</div>

For what it’s worth, I’ve just compiled SDL2 on the Pi 4B because the default version is configured for X11 and I needed the non-X version of that. It’s a [Kivy thing](https://github.com/kivy/kivy/blob/master/doc/sources/installation/installation-rpi.rst).

---

<div class="post-metadata">

**Author:** ![Josh](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/josh/32/4_2.png) [@Josh](https://forum.codeselfstudy.com/u/Josh)\
**Post date:** [April 18, 2020, 1:58am UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/4 "2020-04-18T01:58:33Z")

</div>

Out of curiosity, I searched around to see if Kivy can run in the browser with #webassembly and it looks like [someone did it](https://github.com/kivy/kivy/issues/4469#issuecomment-260221908). The [demos](https://dgym.github.io/kivy-browser-demo/examples/canvas/mesh_manipulation/) might only run in Firefox though.

---

<div class="post-metadata">

**Author:** ![Josh](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/josh/32/4_2.png) [@Josh](https://forum.codeselfstudy.com/u/Josh)\
**Post date:** [April 18, 2020, 9:16pm UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/5 "2020-04-18T21:16:32Z")

</div>

I’m only a third of the way through the course, but it’s a lot of fun so far.

![3D rotating cube](https://forum.codeselfstudy.com/uploads/default/original/2X/e/ef180e8251274ce71d7fe19cb413e41c47488a21.gif)

Edit: a little further in the course:

![3D jet](https://forum.codeselfstudy.com/uploads/default/original/2X/2/2e1381de3838b4e4e9a9da6237151dc5b0aecdca.gif)

---

<div class="post-metadata">

**Author:** ![OutsourcedGuru](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/outsourcedguru/32/983_2.png) [@OutsourcedGuru](https://forum.codeselfstudy.com/u/OutsourcedGuru)\
**Post date:** [April 19, 2020, 9:44pm UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/6 "2020-04-19T21:44:33Z")

</div>

That’s actually working in Safari for me. 😀

---

<div class="post-metadata">

**Author:** ![OutsourcedGuru](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/outsourcedguru/32/983_2.png) [@OutsourcedGuru](https://forum.codeselfstudy.com/u/OutsourcedGuru)\
**Post date:** [April 21, 2020, 2:30am UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/7 "2020-04-21T02:30:56Z")

</div>

I remember back in the Pascal programming days building up a 3D rendering engine. It was wonderful as I recall. This would have been in those days when you had to purchase and physically install a math coprocessor chip into your motherboard. Lots of linear algebra. It’s a bit like what goes on under-the-hood with tools like gimp/jimp and Adobe Photoshop.

---

<div class="post-metadata">

**Author:** ![Josh](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/josh/32/4_2.png) [@Josh](https://forum.codeselfstudy.com/u/Josh)\
**Post date:** [October 6, 2021, 4:47pm UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/8 "2021-10-06T16:47:45Z")

</div>

There’s a new course on 2D physics engines.

[https://courses.pikuma.com/courses/game-physics-engine-programming](https://courses.pikuma.com/courses/game-physics-engine-programming)

---

<div class="post-metadata">

**Author:** ![whassup](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/whassup/32/4126_2.png) [@whassup](https://forum.codeselfstudy.com/u/whassup)\
**Post date:** [August 14, 2024, 5:32pm UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/9 "2024-08-14T17:32:15Z")

</div>

Hey, can anyone help me by sharing this course with me? I am from Nepal and direct foreign payment is restricted here. I am a student and financially it would be difficult for me to get this. There is a computer graphics course in my current semester so it would really great to learn the subject in a interesting way he teaches.

---

<div class="post-metadata">

**Author:** ![Josh](https://forum.codeselfstudy.com/user_avatar/forum.codeselfstudy.com/josh/32/4_2.png) [@Josh](https://forum.codeselfstudy.com/u/Josh)\
**Post date:** [August 14, 2024, 5:49pm UTC](https://forum.codeselfstudy.com/t/3d-graphics-programming-from-scratch/2240/10 "2024-08-14T17:49:06Z")

</div>

Filesharing isn’t allowed here in the forum, but you could try [contacting the instructor](https://pikuma.com/contact) and explaining your situation.
