Advertisement

When to start with 3d programming

Started by July 03, 2000 09:16 PM
17 comments, last by FragStorm 24 years, 6 months ago
Hi...I posted a post similiar to this a while ago...but I can''t seem to find it now. So anyway, I consider myself to be a decent C++ programmer, and I''ve been getting into game programming recently, and I''m writing a DX wrapper/engine right now for DDraw as I am learning it. But what I really really want to do is 3d graphics coding with OpenGL or D3D, and I am wondering when I can start doing this...becuase I really want to start it, but I don''t want to foolishly rush into it if it will cause problems. Well, hopefully that made sence. thanks for the replies
We shall be free; th'' Almighty hath not build here for his ervy, will not drive us hence: Here we may reign secure and in my choyce To reign is worth ambition though in Hell: Better to reign in Hell, than serve in Heav''n.
Well for what''s it worth here''s my opinion:

Make sure you know your tools language first and foremost. The last position you want to be in is stuggling with higher level concepts while trying to figure out the difference between a const char* or a char const*.

As far as when to tackle 3D? It''s like this:

You''ll do it and become extremely talented at it.
You will fail miserably, become disgruntled/depressed which then leads to burn out and/or technology addiction in which case you''ll never keep up.

Either way though it''s kind of like Nature''s Natural Selection for programmers. The only way you''re gonna know is in hind-sight.


YAP YFIO,
deadlinegrunt

~deadlinegrunt

Advertisement
It would good to have an excellent understanding of linear algebra afore hand. Lots of vector & matrix math is needed for nearly every aspect of a 3D game.

There are two (otherwise) rather obscure areas of number space that are used in 3d graphics; affine space & quenterions (sp?)

Don''t worry if you''ve never seen the names before, affine space more or less means (as far as games are concerned) 4D matrices can describe rotation, scaling, shearing, & perspective transformations.

Quenterions are used to describe rotations efficently, but are not neccessary...

If you can''t multiple two matrices or do a vector dot product you are in for a world of hurt. If you''ve really good at math & solving such problems then you will probably end up emulating such procedures...

If you get overwhelmed, come back to it later once you''ve learned a bit more.
- The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.-- Tajima & Matsubara
Learning how to code D3D isn''t the same thing as learning 3d programming. You should really learn how to code your own software engine first.

Anyone can learn to initialize D3D and tell it to draw some triangles, but when trying to go from that point to a full working 3d engine you will hit endless brick walls if you don''t know the basics of 3d programming.

You need to learn about the 3d pipeline, the 3d to 2d projection, scaling, rotating and translating with matrices, backface culling, clipping, sorting and light-sourcing at least.

If you are serious about 3d programming I would also recommend learning gouraud and phong shading, affine and perspective-corrected texture mapping and z-buffering as well. And I don''t mean how to do them with D3D but how to do them yourself with maths.

Once you know this stuff you can approach D3D/OpenGL with confidence and the concepts in it will make a lot more sense. You will also be twice the 3d programmer you would be if you hadn''t learnt it. You''ll probably ignore me but if you did want to learn how to code a software engine I would recommend the following books-

The Black Art of 3D Game Programming - Andre Lamothe
Building a 3D Game Engine in C++ - Brian Hook (highly recommended but may be out of print)

And by the way, 3d programming is enormous fun.
...and when to start is right now!
Haha great..thanks for the replies..they were all helpful. Could any of you recommend any good websites/resources for 3d Maths that will be helpful. Also any good sites for 3d programming (not D3D! simon_brown Thanks again. I''ll try checking up on that book simon. Hehe , I have to admit...all this work ahead of me sounds like alot of fun...if I can only get it all organized now. Thanks to anyone who can post any good sites/resources
We shall be free; th'' Almighty hath not build here for his ervy, will not drive us hence: Here we may reign secure and in my choyce To reign is worth ambition though in Hell: Better to reign in Hell, than serve in Heav''n.
Advertisement
look no further. here and ,Flipcode.com are good. (flipcode's better for 3d)

JoeMont001@aol.com / Polarisoft.n3.net


Edited by - Julio on July 4, 2000 10:22:37 PM
My HomepageSome shoot to kill, others shoot to mame. I say clear the chamber and let the lord decide. - Reno 911
I''ve got a couple of tutorials on my own page at http://www.sbdev.pwp.blueyonder.co.uk (right down the bottom of the page) but as you will see I''m no expert myself. Unlike most of the web tutorials i''ve seen i tried to keep the language simple and jargon free.

Also of course, our hosts Gamedev have some excellent tutorials. Go to http://www.gamedev.net/reference/programming/ and then click "3D & Theory".
I don''t actually agree with simon_brown75. If all the engine does is load some triangles and draws them, then yes, he hasn''t really learned anything. But if his engine loads brushes (from a Quake map for example), csg''s them, compiles a BSP tree, calcualates portals, builds a PVS, calculates lightmaps, and then draws them but uses OpenGL for the drawing, I believe he has learned something.

-Andreas
-Andreas
Yeah, that's true of course , but those things aren't part of D3D or OpenGL. I'm just saying learning D3D or OpenGL on it's own doesn't amount to being an accomplished 3d programmer, and learning D3D/OpenGL is easier if you already know the basics of what makes a complete 3d engine.

Edited by - simon_brown75 on July 5, 2000 3:54:39 PM

Edited by - simon_brown75 on July 5, 2000 4:29:47 PM

This topic is closed to new replies.

Advertisement