>>275976
Why does this need a thread instead of being in QTDDTOT?
But to actually answer your question, depends a lot on how autistic you want to be about it. If you slap some form of window output, an OpenGL/Vulkan/DirectX renderer, input handler, and some audio output together - congrats you've made an engine. Not a good one, but it's still a game engine.
Further enhancements to that pile of shit would be adding importers for various file types, some way to manage objects in one of various ways (for instance ECS), a scripting language, some way of defining and loading scenes so you wouldn't have to manually handle loading new levels, some way of handling saving and loading, some kind of scene editor, etc.
It's important to note that not all of those are strictly necessary. It all depends on what kind of games you want the engine to be capable of creating, and if you actually want to make a game with it instead of just creating an engine you should very much only be adding what you need. You can always expand its capabilities while working on your next game. And in almost all cases, you can pick between making something yourself, or just bolting on some libraries someone else made.
But the most important part is >>275978