I know C++...

Started by
23 comments, last by lordaine 18 years, 9 months ago
What's really important is that you understand your 3D fundamentals such as matrices and vector math. OpenGL and Direct3D are just fancy ways of passing the actual calculation of such things off to special hardware. When it comes down to it, DirectX and OpenGL are just 2 common syntaxes for expressing the underlying operations. If you understand what's actually happening behind the scenes, you shouldn't have any problem getting up to speed on either API in a reasonable amount of time. At digipen, we write a software 3D T&L engine that processes all the way from the initial model and matrix data all the way through each individual pixel.

In my experience and from other people, OpenGL seems to be the easiest to get started with though, for the simple fact that simply getting Direct3D up and running is fairly complicated. OpenGL is open, portable, and has been around several years more than Direct3D so it is more mature. It has been proven to scale well to limited environments such as now-antiquated workstations, to graphics super-computers and even the upcoming Playstation 3 (which will support a scaled back version of OpenGL called OpenGL ES.)

Most companies don't care a whole lot about which API(s) you know unless they're hiring you to be the graphics guru. Knowing the fundamentals is more key. They're not likely going to ask "Show us how to do X in Direct3D/OpenGL" but more likely "Derive a 4x4 homogenous matrix that translates a vector 2 units in the positive X direction and 5 units in the Z direction, then rotates 90 degrees about the Y axis." They'll probably ask something more complex, but the idea is that they want you actually DO IT (on paper) rather than recite code-listings from the API of choice.

Also, before you delve into Games, make sure you really do have a firm grasp of C++. There are a lot of people who read "C++ in 21 days" and think the book was 1000 pages and that there can't possibly be any more to learn. Wrong. If you don't have at least one good reference book, such as Stroustrup's "The C++ programming Language", then you don't know C++. In addition to C++ syntax and general use, you should also be familiar with recursive algorithms, the C++ standard library, design patterns, data structures(lists, stackes, queues, hash tables and *TREES* for example) and memory managment/managers, among other things.

Do make sure you undertand the fundamentals, as for the API, I personally recomend OpenGL.

Good luck.

throw table_exception("(? ???)? ? ???");

Advertisement
Quote:Original post by Ravyne
What's really important is that you understand your 3D fundamentals such as matrices and vector math. OpenGL and Direct3D are just fancy ways of passing the actual calculation of such things off to special hardware. When it comes down to it, DirectX and OpenGL are just 2 common syntaxes for expressing the underlying operations. If you understand what's actually happening behind the scenes, you shouldn't have any problem getting up to speed on either API in a reasonable amount of time. At digipen, we write a software 3D T&L engine that processes all the way from the initial model and matrix data all the way through each individual pixel.

In my experience and from other people, OpenGL seems to be the easiest to get started with though, for the simple fact that simply getting Direct3D up and running is fairly complicated. OpenGL is open, portable, and has been around several years more than Direct3D so it is more mature. It has been proven to scale well to limited environments such as now-antiquated workstations, to graphics super-computers and even the upcoming Playstation 3 (which will support a scaled back version of OpenGL called OpenGL ES.)

Most companies don't care a whole lot about which API(s) you know unless they're hiring you to be the graphics guru. Knowing the fundamentals is more key. They're not likely going to ask "Show us how to do X in Direct3D/OpenGL" but more likely "Derive a 4x4 homogenous matrix that translates a vector 2 units in the positive X direction and 5 units in the Z direction, then rotates 90 degrees about the Y axis." They'll probably ask something more complex, but the idea is that they want you actually DO IT (on paper) rather than recite code-listings from the API of choice.

Also, before you delve into Games, make sure you really do have a firm grasp of C++. They're are a lot of people who read "C++ in 21 days" and think that the book was 1000 pages and they're can't possibly be any more to learn. Wrong. If you don't have at least one good reference book, such as Stroustrup's "The C++ programming Language", then you don't know C++. In addition to C++ syntax and general use, you should also be familiar with the C++ standard library, design patterns and data structures, among other things.

Do make sure you undertand the fundamentals, as for the API, I personally recomend OpenGL.

Good luck.


Wow thanks, that was very helpful. :)
No problem. I appended a little more to the last paragraph when I went back to fix some grammatical errors, although I noticed another :( anyhow, didn't add much, just a few more examples of what else to be familiar with.

throw table_exception("(? ???)? ? ???");

Quote:Original post by Ravyne
In my experience and from other people, OpenGL seems to be the easiest to get started with though, for the simple fact that simply getting Direct3D up and running is fairly complicated.


In fact DirectX9 initialization is much simpler than openGL... I guess you never coded anything with DirectX9, right? DirectX complexity is nothing more than a myth from people who used DirectX7 or previous versions, or never used DirectX at all [wink]...
Bulma
Quote:Original post by Ravyne
Most companies don't care a whole lot about which API(s) you know unless they're hiring you to be the graphics guru. Knowing the fundamentals is more key. They're not likely going to ask "Show us how to do X in Direct3D/OpenGL" but more likely "Derive a 4x4 homogenous matrix that translates a vector 2 units in the positive X direction and 5 units in the Z direction, then rotates 90 degrees about the Y axis." They'll probably ask something more complex, but the idea is that they want you actually DO IT (on paper) rather than recite code-listings from the API of choice.


Which is a good reason to forget openGL because most tutorials (Nehe included) will teach you to use "glRotatef()" and "glTranslatef()", instead of creating transformation matrix... (like you normaly do in DirectX for example) [lol][lol][lol][lol][lol]
Bulma
It isn't really important to know exactly how to create a translation matrix, what is important is that you know how to combine transformation matricies to give you the transformation you want and how that transformation can then be applied to verticies, normals etc.

Quote:I have another question. What's the point of learning SDL? I know it's fast, but big companies don't use it and you don't benefit from it except if you make a game and start selling it.


What you need to use is the right tool for the job and as you're a beginner the job is creating some simple (ish) games to introduce you to game develop and the right tool for this is SDL (not that this is the only tool, Allegro would be another good choice). Anyway SDL is used in the linux port of UT 2K3 (and several other linux ports of big name games) and it was used because the makers of UT 2K3 decided it was the right tool for the job.
Quote:Original post by Vladk10000
I have another question. What's the point of learning SDL? I know it's fast, but big companies don't use it and you don't benefit from it except if you make a game and start selling it.


Euh, GarageGames is not a big big company, but they are growing steadily. And if I am not mistaken, their game engines use SDL to some extend.
--------------------Life after death? Is it like terminate and stay resident?
Quote:Original post by Ravyne
but the idea is that they want you actually DO IT (on paper) rather than recite code-listings from the API of choice


Why would a company want to see me do linear algebra / matrix translations on paper? Once you have fast math functions, it's way more important how you use them, not that you can do them manually (on paper or not).

A more reasonable question employers would ask would be something like, how would you implement object x with functionality y. Something that would require use of vector math, matrix translations, cross products, etc.

And if graphics position, something like "How would you implement effect x?" that required per-vertex math...
Quote:Original post by Bulma
Quote:Original post by Vladk10000
I have another question. What's the point of learning SDL? I know it's fast, but big companies don't use it and you don't benefit from it except if you make a game and start selling it.


There is no point... It is a waste of time really...

Would you care to back up such a statement with any points at all?
Quote:Original post by Chris81
Quote:Original post by Ravyne
but the idea is that they want you actually DO IT (on paper) rather than recite code-listings from the API of choice


Why would a company want to see me do linear algebra / matrix translations on paper? Once you have fast math functions, it's way more important how you use them, not that you can do them manually (on paper or not).
I've seen it where you had to write functionality to do this sort of thing. I think that makes sense because anyone can memorize a few API calls without actually having any idea how they work. Again, it depends upon what your intended work will be and such.

This topic is closed to new replies.

Advertisement