Programming can be great if you find an area that really floats your boat, but it can also be a major drag if you can't find work in that area and have to do other tasks instead.
I kind of fell into it as something I could do and earn money with, but I could think of a lot of other jobs I'd rather be doing. I'm planning a gradual shift in career, too, but away from programming rather than towards it. I'm slowly putting together a CNC machine and want to start using it to make all kinds of stuff. Ideally I'd like to build prototypes of ideas I've had and license out the concepts to large companies. Essentially operate as an inventor / intellectual property licensing company. I'd like to also make guitars and basses, tube amps, etc, in between (high quality, custom, low volume production). Well, enough about me.
You've probably been exposed to the more entertainment-related programming jobs, considering the course you've done (3D graphics programming and game development) and they can be great, but are hard work and can be really technical (require in-depth knowledge of specific technologies like OpenGL or Direct3D). If you are interested in game development, Unity3D is a good platform / system to learn, doesn't require too in-depth technical knowledge and is multi-platform.
There are tons of IT and programming related jobs / titles out there. Database design and maintenance, application architecture / design and development (stand-alone desktop apps, distributed apps, client-server apps), web technologies, etc. Then there's the setting up and maintaining stuff (systems / network administration), setting up PC's, etc. There's also mobile phone development. Mobile stuff can be quite fun and interesting with different sensors, etc, but in most cases will require you to learn a specific programming language for that system (a version of Java for Android, ObjectiveC for iOS, although you can use C++ for both it's better to use the specific languages).
Do you prefer the hardware and setup side of PC's (general IT work), working with existing systems (systems admin), making the system do something cool with minimal code (scripting, some web technologies) or designing and creating a system / application of your own (programming)? That may give some idea of which direction to focus on.
An advantage of many IT related jobs is that you don't NEED to study first (although a degree or certification definitely helps and I would recommend one if you plan to make a long term career in it), you can self-study and then simply prove you can do the required tasks for some jobs.