Advice: Build-Your-Own Or DirectX

Started by
17 comments, last by Low Bias 19 years, 8 months ago
I realize this is discussed at length in many places, but I'm sort of at a crossroads. I've been reading 3D Tricks (LaMothe) and while I'm enjoying all of this, I'm not sure that I'm following the best path towards making a 3D game. My plan was to build my own fairly simple engine and learn the basics of 3D graphics. But upon looking into Direct3D a bit more, it's not like it does everything for you, is it? You still have to call matrix multiplications and the like, you just don't have to code them. In your opinion (with the full understanding that this varies greatly), is it best to jump right into DirectX and learn to build games that way? Can you not still build an engine but build it with Direct3D? Or is it best to build an engine, even if only a basic one, and know the theory that much better? I guess the real question boils down to: Why wouldn't I build an engine with DirectX? Is it really that high level, or is it simply an abstraction over the hardware? Sincere thanks for your opinions on the matter. I would really like to hear about how some of the pros or more advanced amateurs are doing this. Surely there engines are based on DirectX?
Advertisement
My personal opinion is, learn the basics of D3D first. Then with that knowledge, build an engine around that. Why reinvent the wheel for nothing? If you really wanted to, you could I guess, but that was what graphic libraries were created for. I'm sure you could still develop a 3D engine around DirectX or graphical library for that matter.
I'm no expert, but this is my opinion.

Basically I think 3D tricks is a great SUPPLIMENTAL book. You should try and read it, and understand the concepts, just so you know what is actually going on at a low level. If I were going to actually start a real project, I'd rather use DirectX. Why? Because my personal production time would be much more effecient using DirectX rather than building my own 3D rasterizer. It's like the reason we learn how to do long division. If I'm an accountant, I'd rather use a calculator to do my division because it's faster. I can be just as accurate going by pen and paper with a certain amount of care, but just as in any business, time is money.

Certainly knowing how to build your own rasterizer will make you a much more knowledgable and skilled programmer. But when taking the time on an actual project where effeciency is money, why waste time reinventing the wheel?
I agree with Etherstar. Read Tricks 3D so you know what DirectX does, but code your actual games in DirectX. You'll waste tons and tons of time working out problems that you'll never actually have in real life if you try to write your own rasterizer. But understanding the concepts is important. I'd actually recommend reading corresponding chapters of Tricks while learning to code with DirectX. If you're adding lighting to your game, read up on how it's done in Tricks, then code it with DirectX. Making blind API calls is no good, but writing an entire 3D engine from scratch might be a little overkill.
-------------------------------See my tutorial site: Click here
By writing your own rasterizer you won't be able to take advantage of the video card. Everything will be done on the processor and it will be slow on anything but low detail scenes.

Go with Direct3D and learn the math behind it in your spare time.
____________________________________________________________AAAAA: American Association Against Adobe AcrobatYou know you hate PDFs...
I agree with everyone that going the D3D route is the quickest and easiest. However, I got into 3D programming by making my own software renderer in Java.

It took a long time to code but it really helped me get up to speed. It's not like I was sitting there programming it day in day out thinking, "what a real pain in the ass this is". I was thinking what great fun it was to learn all this stuff. I learned how to use matricies to speed up rotations and translation (yeah, I used cos and sin on every single vertex to do rotations in the begining, whoops!)

So my advice- If you're looking for the quickest, fastest- go D3D. If you're in this to learn how to write your own software renderer, then do just that.
Oh yeah- Raloth is right. You won't be able to use hardware acceleration if you write your own software renderer. But are you really looking to write a 100fps renderer here? I wouldn't set of to build the next Quake engine using a software renderer or anything, but I don't think that's what you're shooting for.
Quote:Original post by aaroncox1234I'd actually recommend reading corresponding chapters of Tricks while learning to code with DirectX. If you're adding lighting to your game, read up on how it's done in Tricks, then code it with DirectX. Making blind API calls is no good, but writing an entire 3D engine from scratch might be a little overkill.


That sounds like a nice balance. I guess it doesn't have to be one or the other. This way I get to develop a game using the best technology to do it, but I also gain a true understanding of what's going on.

Thanks all for your help. I'm going to pick up a good book on 3D games with DirectX.

Really, at the end of the day, I want to be a good game programmer, not an engine developer.
I learnt a great deal of math during highschool and in this first year of faculty and i can't even say i know 10% of all of it.
It's great to make your own shapes but why making a sphere when you have an auxiliary library or something,maybe because you want to deform it...
<quote>Knowledge is your path to freedom,why not learn them both</quote>
just a suggestion, if you really want to write your own 3DEngine, do it on the GBA.

This topic is closed to new replies.

Advertisement