I've been Programming in C++ for a year. I am done with Basics and all other OOP concepts(like inheritance,polymorphism and STL)

I want to be a game programmer, but i don't know what to study now?

I've heard about OpenGL, DirectX, GUI libraries as a result i m confused to choose which topic. Should I go for OpenGL or DirectX or GUI libraries or maybe something else.

If you think this is too early for me to learn these things then plz mention a good topic to me.

Thanks

C++ is such a rich language that you'll never "finish" with it.
Even if you move to another language, like C#, you'll discover things you could have done with C++ you'll go back and polish your old skills.

Even with c++, there's still MFC and CLI and a host of other frameworks.
If you're working in the Microsoft world, you'll eventually experiment with cross-language technology and find other languages on the dot net platform that can enhance or can be enhanced by C++. ...and, of course, there's mixing managed and unmanaged code.

There's no need to ever abandon C++, but use it to enhance everything else you'll eventually do.

>> I've been Programming in C++ for a year. I am done with Basics and all other OOP concepts(like inheritance,polymorphism and STL)

That's funny. I've probably said that (i.e. "I am done with ... ") every year since I started programming (13 years ago or so), but it was always preceded with "Last year as was such a noob, but now I am done with ...". The C++ learning curve is an endless recursion of "last year I sucked, now I'm awesome".


>> I want to be a game programmer, but i don't know what to study now?

Game programming is a huge topic in its own right. You should probably figure out more specifically what interests you.

As a starter, you should just start trying to render some basic stuff in 3D and move on from there. Either learn to use OpenGL, or take a head-start and grab an off-the-shelf rendering engine like Ogre3D. Later, you can figure out what is more interesting to you (e.g. rendering effects, particle systems, physic realism engines, game logic, animation (skinning), artificial intelligence, etc.). As soon as you are a bit comfortable with rendering basic stuff, then you can start thinking about some good idea for a computer game (of manageable complexity). That should keep you busy for a few years (it did for me).


>> Should I go for OpenGL or DirectX or GUI libraries or maybe something else.

Ideally, a game programmer should know all of this anyways. Doing GUI is more for direct and simple interactions with the end-user, it can be used for simple games (no significant 2D/3D graphics) but I mostly learned to do GUIs by writing editors for some 3D models or particle systems for my basic 3D games, I would say that's a pretty good way to do GUI programming on the side. OpenGL is definitely better for learning 3D graphics programming in a way that really teaches you how it works under-the-hood, as opposed to DirectX which is easier but also higher-level (in other words, to be a good 3D programmer you should know OpenGL, but you can get away with only knowing DirectX).

Whatever you decide to do in game programming, be warned that mathematics is a huge part of it. If you don't like math or struggle with it, you won't be very happy doing game programming. So, if the "artistic" side of it is what interests you, then you might want to focus on developing skills in 3D art (making textures, models, animations, etc.).


>> If you think this is too early for me to learn these things then plz mention a good topic to me.

No. I would say it is just about the right time, at least, to get started with simple and reasonable ambitions (take it one step at a time, and don't neglect taking the necessary time to best design your software and to learn as much as possible along the way).

@thines01: Your post is totally out-of-topic, your rant on other languages and your almost-fanatical praise of MS didn't address the OP's question at all. Moreover, the OP said he is interesting in "computer game programming" which is a world almost entirely dominated by C++, other languages or MS platforms are pretty much irrelevant in that world.

commented: Thanks mike +0

You might first want to learn using a game programming library; for instance Allegro.
http://alleg.sourceforge.net/

And then learn to use a library for 3D graphics; for instance OpenGL.

Ideally, post your questions on boards that specializes in game programming; for instance GameDev
http://www.gamedev.net/index

When you ask my opinion, you get MY opinion.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.