Doom-Style Engine Progress Update: Renderer Rewritten in OpenGL

February 28, 2026

When I began working on my Doom-style engine, Portals, I intentionally started with a software renderer. The goal was to keep it old-school and fully under my control.

As development continued and I introduced more advanced features such as slopes, room over room support, and a particle system, the renderer became increasingly complex. Rendering artifacts appeared in edge cases and performance degraded significantly, especially when the camera moved close to particle effects.

I initially tried to fix the issues within the software renderer. I spent time optimizing and correcting edge cases, but the complexity kept increasing and some problems proved difficult to resolve cleanly.

Today I made the decision to rewrite the renderer in OpenGL 3.3.

I'm not a graphics programmer and maintaining a feature-rich software rasterizer while continuing engine development was no longer the most effective use of my time.

The rewrite took the entire day.

The result: significantly improved and stable performance, resolved graphical issues, and a noticeably smaller and cleaner codebase.

I also removed SDL_image 3.0 from the project. With native PNG loading and saving now part of SDL 3.0, the extra dependency is no longer required.

Even the screen-melting effect survived the transition to OpenGL.

Visually, the engine remains nearly identical. If you compare the screenshots below, the difference is minimal.

(Left: Software Renderer / Right: OpenGL Renderer)

Portals software renderer screenshot Portals OpenGL renderer screenshot