Before you discount Unity and lump it in with GameMaker, take a look at the unity webiste. Specfically the tutorial section:
You're not just dragging widgets around and using some proprietary scripting language. You can use C# and concentrate on the game logic instead of low-level frame work code.
If you want one more step closer to the metal, try OpenGL, DirectX, or SFML as was suggested before.
But seriously, watch a few tutorials from Unity before handwaving it away.