Sign in to follow this  
Basic

DX7 and 8 benfits over DX9?

Recommended Posts

Basic    128
I couldn't find any direct comparison charts between DX7, 8, and 9(or of course 10). I'm wanting to start getting into DX programming. I've downloaded all the SDK's so I'm ready to go, but I'm wondering which version to jump into. Obviously 9 is the newest and has the most new things, but are there any crucial things I'd miss if I started with DirectX 7? What benefits or costs would there be in using an older version of DirectX? Has the way things are done significantly changed in terms of syntax or setting up the DirectX device? If I wanted access to shaders(without faking them), the earliest version I could use is DirectX8 correct? Has version 9 become easier to use? These are just some random questions, that I'd love to get enlightened with before I jump into DirectX. Thanks for any help. Mike

Share this post


Link to post
Share on other sites
wyrzy    430
I recommend starting with DX9. DirectX 7 was a slight pain, and if you're only going to be working with 2D for now, using D3D for 2D Graphics is considerably easier (in my opinion) than using DirectDraw (which is deprecated).

Also, if you're thinking about shaders, DX9 introduced HLSL, so you're better off sticking with the newest version of DirectX, unless you want to program your shaders in Assembly.

I also recommend looking into the D3DX libraries. If you'll be working with 2D, the D3DX Sprite class is very nice, and the D3DX Math libraries are highly optimized. There are also a good handful of other useful libraries. Documentation is poor, in my opinion, so I recommend looking at tutorials for how to use some of the libraries (www.codesampler.com and www.drunkenhyena.com).

Share this post


Link to post
Share on other sites
nullsmind    100
The biggest advantage of using DX7 is to learn software rasterization down to the pixel which D3D can't do. Sure, it's deprecated, but the skills you gain from it can help you build your own DOOM clones even on cell phones, the GBA, etc. Overall, it's educational for a good graphics programmer. DX8 is used quite a bit with DX9 apps because it's the latest interface for input and sound. The only interface version 9 I know of is D3D. Hope that helps.

Share this post


Link to post
Share on other sites
Scet    960
Quote:
Original post by nullsmind
The biggest advantage of using DX7 is to learn software rasterization down to the pixel which D3D can't do. Sure, it's deprecated, but the skills you gain from it can help you build your own DOOM clones even on cell phones, the GBA, etc. Overall, it's educational for a good graphics programmer.


I disagree. While DX8 and 9 may not allow direct pixel access, that can easily be substiuted with dynamic textures. If you want to do "down to the metal" pixel manipulation then learn on a cell phone or the GBA, but don't use deprecated APIs. Plus a "good" graphics programmer for the PC would need to know shaders since in a few years the FFP will be dead, and DX7 doesn't support shaders.

Basic, don't let the "3D" in "Direct3D" scare you, it can do anything DirectDraw can(which is why DD is on the way out). Use the D3DX sprite class to do 2D programming.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
I program in 8.1 still because of compatability. XP comes with 8.1 but most people probably have a higher version installed due to other games. However now there are the variations of 9 that make the whole COM design of DX pointless. Do they have 9a, b, c ,sigma, beta, blah blah blah? Learning 9.0 is probably your best bet since by the time you get up and running with it, it will be the solid standard. Programming in anything under 8 is not smart because most of the interfaces changed and 8 was the "big" version upgrade. You only need to dive into things under 8.0 if your targeting only 95 user IMO. Other considerations come in if your are wanting to do a lot of pixel shader development, which if thats the case go with 9.

Share this post


Link to post
Share on other sites
nullsmind    100
Scet, if all game programming logic is the same, as well as algorithms, etc. does it really matter if you practice on a API that MS doesn't update anymore? It's been a great tool for me over the years and a lot of my practices have indeed carried over to other systems. D3D is a dependency on hardware to carry out rasterization tasks for you, so you better hope that system supports the hardware calls! If you want to be a good graphics programmer, it's always good to know both sides of rasterization at least for educational value... that is, if you want that edge on your resume. I'd recommend DX7/DDraw first before getting into D3D for this reason. It's similar to the .NET applicants I've seen. They have all the same skills... winforms, C#, GDI+, etc. but knowing the Win32 API (what .NET is laid ontop of) will give you that edge. Same thing with D3D ontop of DDraw. But if you're a hobbyist, feel free to start out with D3D. XNA is doing a great job for their D3DX functions.

Share this post


Link to post
Share on other sites
Scet    960
Quote:
Original post by nullsmind
Scet, if all game programming logic is the same, as well as algorithms, etc. does it really matter if you practice on a API that MS doesn't update anymore?


No, but if you're going to use a MS API, you might as well use the most recent one. As I said the same functions DD provides can EASILY be done with D3D. I have a feeling you've never actully used D3D.

Quote:
Original post by nullsmind
It's been a great tool for me over the years and a lot of my practices have indeed carried over to other systems.


That's nice, but it seems he wants to develop for the PC using DX. Plus as you said the algorithms are the same. If he can implement them using dynamic textures he can also implement them on a GBA. He might as well be up to date.

Quote:
Original post by nullsmind
D3D is a dependency on hardware to carry out rasterization tasks for you, so you better hope that system supports the hardware calls!


This isn't 1995. Even one of my computers with a crappy built in SiS chip can support shaders and it's almost 4 years old. We aren't taking about embedded systems, we're talking about a PC. The right tool for the right job.

Quote:
Original post by nullsmind
If you want to be a good graphics programmer, it's always good to know both sides of rasterization at least for educational value... that is, if you want that edge on your resume. I'd recommend DX7/DDraw first before getting into D3D for this reason.


I would hardly call writing one's own 2D blitting routines an "edge". Mabye writing something like the Irrlicht Engine, but this seems a bit much for basic game development.

Quote:
Original post by nullsmind
It's similar to the .NET applicants I've seen. They have all the same skills... winforms, C#, GDI+, etc. but knowing the Win32 API (what .NET is laid ontop of) will give you that edge. Same thing with D3D ontop of DDraw.


First of all D3D is NOT built on top of DDraw, the 2D routines in D3D use the same vertex processing underneath as the 3D stuff. DDraw on the other hand provides access to the frame buffer(s). Also I don't think WinForms is a wrapper of Win32. They might produce similar things, but I'm pretty sure their implementation is different.

Share this post


Link to post
Share on other sites
nullsmind    100
Sec, Direct3D is built on DirectDraw's frame buffer layer. You should know that. Anyway, Basic, you have a wide range of thoughts here. I hope you have success on whatever you do.

Share this post


Link to post
Share on other sites
Basic    128
Thanks for the help guys. Being a beginning with DirectX, I'm very tempted to start with DirectX 9. My reason being, if there was a big change between 7 and 8, I don't want to have to make that transition, but at the same time I want to use a version that is stable, and 9 seems to be. By the time I learn it well, I'm sure DirectX 10 will be out(heck it's already in the sample browser of the Feb. SDK)

Thanks again for your help.

Share this post


Link to post
Share on other sites
Nik02    4348
Quote:
Original post by nullsmind
Sec, Direct3D is built on DirectDraw's frame buffer layer. You should know that.


No, it isn't. D3D7 was, though.

Quote:
Original post by Scet
Also I don't think WinForms is a wrapper of Win32. They might produce similar things, but I'm pretty sure their implementation is different.


This is also incorrect. Windows Forms, as seen in Windows XP, are a wrapper around native Windows calls.

---

That said, I wholeheartedly recommend using D3D 9.0c for any new development. Also, I see it worthwhile to learn about D3D 10 now, even though it's not in widespread use yet.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this