Jump to content
  • Advertisement
Sign in to follow this  
Low Bias

Advice: Build-Your-Own Or DirectX

This topic is 5146 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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>

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!