Can I just skip directly to OpenGL?

I started the handmade series up until the 25th episode more or less, then I decided to make the engine on my own starting with the video rendering.

After I implemented the offset to the pixel renderer (that makes the colors move sideways on the x or y asset if you remember) with a fixed frame rate of 30 fps (my monitor refresh rate is 60hz) I noticed an annoying stuttering.

I checked the source code of episode 19 to see if there were some difference with my code, finding out that I made all the implementions correctly, the only thing missing was the use of timeBeginPeriod, then it was slighty better but the stutter was always present.

Then after some research, I've come to the conclusion that the issue couldn't be solved so easily, not wihout using hardware-accelerated API like OpenGL.

So I was thinking... why spend more time using this method if I can't achieve fluid rendering from the beginning? I already know the theory as of now, so maybe I can just start using the real thing. I already set my mind on avoiding to reimplement the audio like Casey did at the beginning of the course because it was a struggle and it was bound to change sooner or later. So now I am thinking that I can do the same thing for the video renderer.

What do you suggest?

On Windows Vista and up, you could call DwmFlush to sort of "wait for vsync" and have better frame pacing that using Sleep and other method presented in HMH.

To have good frame pacing but still use a software renderer, you can do the rendering in software, but present it to the screen using OpenGL, but at this point I would recommend you to use DirectX 11 instead.

If your goal is to make your own game, you'd better use DirectX and not use software rendering. OpenGL is an option too but its support/quality on Windows isn't as good as DirectX. Also note that the first "way" Casey uses OpenGL in HMH isn't really a good way to do it (Legacy functions, multi threaded OpenGL...). Later in the series he switches to a more modern way of doing things, so it would be better to use that, but I don't know if you can easily follow/learn that in the series, as it's a gradual process, which needs to stay functional with existing things in HMH.

So in short, you'd better use DirectX 11 in my opinion. They are not tutorials per say but those examples helped me a lot to get started with DX11: https://gist.github.com/d7samurai

And for audio you're right not to use DirectSound. Use WASAPI instead, there are some threads in the forums that discuss that.

The handmade network discord has more peoples that would be able to help you, there are very few people still using these forums.