I'm hearing a lot of the same thing when it comes to this topic and it seems most people are pretty confident and in the same mind. So I can't help but think I must be missing something pretty crucial if I can't seem to rationalize the very concept that an entire community keeps talking about. I suppose this confusion comes from one primary basis, which is, how do you translate code into an interactive environment?
So I keep hearing, that people design models in Blender or draw them for use with animation, then they'd download some shaders and use Dynamic Link Libraries with all that support to examine and configure the input/output. I've heard it all.
What I don't understand is that there is a huge gray area in between where I am at now, and how any of that works. Truth be told, I could go and purchase Unity3D right now if I wanted to. Heck, UDK engine is free as long as 25% of revenue is handed back to Epic. I'm sure I could thrive off of that crap if I had the determination but I want to start from the basics and the reason I am doing this is because I want to understand the basics. I want to know how I got there. Not download an engine and have the fish handed to me, I want to learn how to catch the fish myself. Get it?
Here's my problem, then.
I've decided to use C++ (no, duh?) and I'm finding it to be typical in terms of Object Oriented Programming. That's great. I've learned all the basic concepts and I intend to keep learning before I even attempt to make my crappy spin off of Pong - but before we even go there, I want to get some answers on where you'd have to take the language to get that kind of interaction up on screen.
So far I've been learning about if statements, arrays, classes, variables, operators - all the noob jazz. If I want to get something up in console I'd just type cout << "Hello world!" << endl; in one of the statements in my main function and then return 0. SUPER simple stuff, I know. What I'm having trouble understanding is how I can go from typing text into a console, and using this exact same language to render graphics onto a screen and have characters move around. Let's say that I wanted to remake the original NES Super Mario's first level (no way I'm doing this, but hypothetically) in C++. How do I draw up a graphic of Mario with a running animation, add in a background and put in my static objects, and then interact with them. It looks good on paper to make all these objects and classes but I don't know how the hell you'd get there.
Can we really talk on the most basic level? Can someone explain this gray area to me? What steps does someone need to take to get from displaying text on a console to displaying interactive images such as Pong? To type "Game Over" would I still use the cout << "Game Over" << endl; statement or something completely different? Would I just call another class which tells it to position the text in the middle of the screen and in a white, ASCII font? I'm so confused and I can't even fathom how you'd get 3D graphics on screen with textures and enemy AI if I can't even grasp this concept.
Really, as I said. I just need a basic explanation, dumbed down as much as possible to its core foundations of how a programming language such as C++ displays images on a screen that a user can interact with in full functional environments. Even if it's just something like Pong, or the original Mario, or Donkey Kong. Really, really basic stuff.