Still possible to use directx 8?

Started by
11 comments, last by 21st Century Moose 11 years, 6 months ago
I just want to use it for learning purposes. There is abook I want to get but unfortunately it is outdated and uses DX8.
Is it still possible to use DX8? If so how?
Advertisement
DirectX 9 is backwards compatible with DirectX 8, so it's completely possible. Just get directX 9 from the DirectX website and use it. You can progress to DirectX 9 later on if you would like. (That means everything you can do in DirectX 8 works with DirectX 9)

I'm a game programmer and computer science ninja !

Here's my 2D RPG-Ish Platformer Programmed in Python + Pygame, with a Custom Level Editor and Rendering System!

Here's my Custom IDE / Debugger Programmed in Pure Python and Designed from the Ground Up for Programming Education!

Want to ask about Python, Flask, wxPython, Pygame, C++, HTML5, CSS3, Javascript, jQuery, C++, Vimscript, SFML 1.6 / 2.0, or anything else? Recruiting for a game development team and need a passionate programmer? Just want to talk about programming? Email me here:

hobohm.business@gmail.com

or Personal-Message me on here !

It works that way for the runtime, but does it work that way for the SDK too? I honestly don't know the answer, but I'd be surprised to learn that the SDK itself is backwards compatible (in other words, that the June 2010 DrectX SDK includes interface definitions and associated bits to be able to program against all of the older versions.) Then again, maybe they did up to a point.

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


It works that way for the runtime, but does it work that way for the SDK too? I honestly don't know the answer, but I'd be surprised to learn that the SDK itself is backwards compatible (in other words, that the June 2010 DrectX SDK includes interface definitions and associated bits to be able to program against all of the older versions.) Then again, maybe they did up to a point.


Yeah ive been wondering that too. in the meantime i found this:
http://www.oldversion.com/DirectX.html

It works that way for the runtime, but does it work that way for the SDK too? I honestly don't know the answer, but I'd be surprised to learn that the SDK itself is backwards compatible (in other words, that the June 2010 DrectX SDK includes interface definitions and associated bits to be able to program against all of the older versions.) Then again, maybe they did up to a point.

If you install the latest SDK from msdn you will only be able to access the C++ API bindings for DX 9.0c, 10 and 11. You need to find an old DX8 SDK installer somewhere if they are still arround on the web somewhere.
Starting with DX8 is a bad idea, 9 completely redesigned the API and this happened again for 10 and 11, although 11 is very similar to 10 this is just a minor change.

I would suggest you start with learning DX11 instead as that will be the most future proof to learn DX programming from.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

D3D8 is actually very similar to D3D9 - the major changes between them largely consist of improved shader models.

D3D8 would be viable over D3D9 if you would target Windows 98 and ME, but you really don't want to do that nowadays.

If you have D3D8 sample code, it is very easy to convert it to 9. Of course, copy/paste strategy does not work, but one should avoid that anyway.

That said, though, I also recommend using the newest possible version if your target platform allows it. D3D11 (and 11.1) are much cleaner, more flexible and easier to use (in the long run) than the old versions.

Niko Suni

Reading this I'm just curious what language you'll be using? C++? C#?

The reason I ask is I have been learning C# and SlimDX and tried to go via DX9 just so I could match up with the book I was learning from. In the end, I regretted it. The overhead associated with using dated technology might not seem that great at the start - but it's significant in my opinion. I have been using a DX11 book based on C++, even though I'm using C# - but the book has still been extremely useful.

If you're using C# and XNA then I'd say don't bother with DX8 at all, as wouldn't you want to know DX9 anyway?

So go straight for DX11 in my view. It will be worth it in the long-run.
it's also important to note that DX8 is not representative anymore of modern GPU rendering techniques. I doubt the book you have goes for a "shader only" approach, in those days shaders were quite an exotic addition. So you'll find yourself facing a huge API with lots of states to set, a major departure for the modern graphics API all streamlined to support data forwarding from user code and shaders.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

D3D8 and 9 are really incredibly similar, yes, with the main differences being needing to use "9" instead of "8" on all your interface types, an extra param on Create calls, and the splitting off of SamplerState from TextureStageState (some weirdness in SetStreamSource and SetIndices also springs to memory, and some of the Device creation params need to be different too).

That's assuming that we're talking fixed pipeline, of course. The shading models are quite different.

I'll echo the sentiment that starting with D3D8 is a really really really bad idea. The stuff you'll be learning will have very little relevance to any modern API, and being a lower version number doesn't necessarily make it simpler (it's not).

Strong advice from here to hold out until you can find some material for 9, or - better yet - 11. Alternatively go for OpenGL, using the ArcSynthesis tutorials http://www.arcsynthesis.org/gltut/

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

I'm currently using DX7 to develop my projects so it's possible but I don't recommend it. I'm missing out on being able to make use of functionality that's pretty standard and simple these days. And it's not like I'll be a great asset on projects using something more modern. The only reason I continue to use it is due to the limitations of my development machine.

This topic is closed to new replies.

Advertisement