I am a self-taught programming hobbyist who has been spending time
dinking around since before C++98 was standardized. My knowledge has some gaps because I program as a hobby for fun.
There are 2 basic bottlenecks in a graphics based game.
1. Reading of the graphical assets, most times done in a pre-fetch manner during the times the game is idle. Yes, even fast games are idle a lot of times, depending on the frame-rate. The higher the frame rate the less time the game is idle.
2. Updating a game frame to reflect what's changed.
User input is crucial to a game, turned based or real time updated. Turned based timing of the graphics isn't as crucial to real time.
Using DX or OpenGL to create games has some benefits and deficits. There are more sophisticated and newer engines available. Unreal, Unity and Cocos are three that have support in MSVC.
For that matter it is still possible to create graphical games, real time games, using the WinAPI GDI with old school Windows sound/music support. Games created this way ain't 3D or full screen, but they can be fun to play.
If a game ain't fun to play then using the latest game tools are a waste of time and effort.
Shameless plug, my GitHub repo for updating (2003/2004) graphical games using the GDI and WinAPI multi-media system to work with modern Windows (Win 10):
https://github.com/GeorgePimpleton/Win32-games
"I think" by playing directly in the buffers with DirectX or OpenGL |
You are trying to defeat one of the main reasons the libraries were created originally. To hide all the messy details of graphical/sound management. Before DX/OpenGL the programmer had to spend a lot of coding effort dealing with how to "talk" to the video/sound cards installed with lots and lots of custom code. DX/OpenGL were created so there was a "universal" interface to the cards no matter what was installed. So you, the programmer, could be more involved in creating the guts of the game itself.
DX and OpenGL are designed to be as speedy as needed, manual tinkering will likely create a lot of bottlenecks that wouldn't be there otherwise. Use the asset management DX/OpenGL provides, they are optimized for good performance.
DX has seen some major changes over the years, OpenGL development has been more static though there are differences between the versions.
I truly miss DirectDraw. Though it has kinda resurfaced with the introduction of Direct2D. The resources to learn DX or OpenGL are outdated (books) and online resources are scattered all over the place.
I haven't spent much time with DX, most of my hobby projects are console based. I have never really done even any tinkering with the basics of OpenGL.