Work continues on my graphics project

My vulkan test program

EDIT: After saying I was going back to opengl I have in fact continues with vulkan in C++ but the point stands.

What I’ve been up to

It’s been a while since I last wrote about my graphics project so I thought time for an update.

Frankly, not much progress. I have a full time job and I have a toddler. That means that my free time is limited to about 90 minutes each evening after she has gome to bed. I often have30 minutes to do some code! And quite often then I’m tired and just flop in front of the TV or read some things online and 90 minutes after a few days away mostly involves catching up with where I was last time.

Still, I have done some thing. I tried out Vulkan. I made a test program that displays a textured and rotates it over time or using the keyboard or mouse. A video is attached.

This was written in C++23 but using a C style of programming. No classes , no RAII, just functions and structs. I used glfw for window creation and input.

I got it to work but then for some reason decided to recreate it in Odin.

Using Odin

Using Odin was great. I found it completely frictionless. There are some things I would change about the language but overall it was a pleasure to use. I’ll write more about odin later on.

Using Vulkan

Using Vulkan not so much. I don’t just want to complain about it being too verbose and complex. It is, but I got it working and it wasn’t that bad.

The main problem I have is that it takes so long to get anything done by the time I’ve look at the documentation and tried to work out some code, it’s time to go to bed and I don’t manage to get anything done.

It’s made worse because often there seems to be an extension or optional feature I might have used instead but it’s so hard to fine comprehensive documentation about what I ought to be using now in new code. If I had whole days available to work on this it might not have been such a problem but you can’t learn and implement API like this in 30 minute chunks with two days between each session.

Going back to opengl for now

So I think I’m going to go back to OpenGL for now. It’s more than good enough for what I want to do and I can get stuff done in a reasonable time frame. I’ve not given up on vulkan and I don’t hate it, I just would rather spend the time on my project, not on fighting a complex API.

I strongly think they should have implemented a simple API on top of it with reasonable defaults, and exposed the current API as extended functionality for those that need it. I know there are libraries that do this, but I don’t want an other third party library, it should have been in the standard API.

Perhaps one approach when I do back to vulkan is to write the simple layer myself, so I can control exactly what it does and how.