DirectX development in Visual Studio 2012

Started by
5 comments, last by BenS1 11 years, 6 months ago
I'm aware of the new 'Metro' style apps for Windows 8 and how certain DirectX 11 features cannot be used in Metro apps (Such as the D3DX and Effects libraries) however all the documentation says that the D3DX and Effects libraries can be used on Windows 8 Desktop apps.

Whilst its true that apps developed with Visual Studio 2010 and the DirectX SDK from June 2010 will work fine on Windows 8 Desktop mode, from what I can see now that DirextX is part of the Windows SDK and included with Visual Studio 2012 it appears that you cannot develop Windows 7\Windows 8 Desktop apps that use D3DX\Effects using Visual Studio 2012. Is this correct, as I've not seen that mentioned anywhere before?

I suspect you can do a bit of hacking to get Visual Studio 2012 to use the June 2010 version of the DriectX SDK, but I'd imagine you could get into a right mess doing that.

Ultimately what I want to do is to continue developing my Windows 7 game but using the latest and greatest version of the Visual Studio... is this possible?

Thanks
Ben
Advertisement
D3DX and Effects11 have indeed been deprecated in the latest windows SDK as far as I know and to be completely honest with you I believe this is actually a good thing.
All math-related systems from D3DX have been moved to a new library called DirectXMath, so that's a possible alternative if you have been using the D3DX math functions.

If you really want to use the latest windows SDK and VS2012 to develop your game you'll probably have to write your own alternatives to the D3DX functions you're depending on, which shouldn't be all too hard I believe.
Writing an alternative to Effects11 can be somewhat trickier, but it can also be a good learning experience as it'll actually encourage you to think more about what you need in a shader system and how your shaders should be organized. A good place to start with writing your own alternative to the Effects11 library would be the shader reflection system provided by D3D11.

I gets all your texture budgets!

Thanks Radikalizm,

To be honest, I'm not a fan of the Effects framework either, however the code that I used as the starting point for my project used it and now it'd be a bit of a pain to have to refactor that part of the code. Oh well, I guess its not too bad.

Thanks
Ben
I've recently made the switch to the Windows SDK on Windows 7. I've changed all D3DX code to use D3DCompiler and DirectXMath. I'm also using the texture loader from directxtex (http://directxtex.codeplex.com/). I find the new libraries much more lightweight.

You can find most of the info on the right-hand side of the main page of gamedev.net.

Moving from D3DXMath to DirectXMath might take a bit of time, since DirectXMath uses SIMD and needs to be handled in a certain way. There should be some threads on this somewhere on the forums though, and there are docs available explaining how to do the conversion.
Thanks Corvwyn,

Ok, so I've decided to start making the move.

The first problem I've got is that XMCOLOR doesn't seem to exist in DirectXMath.h, even though the DirectXMath documentation says it does:
http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.xmcolor(v=vs.85).aspx

What am I missing? :(

Thanks
Ben
It's at the bottom of the page you linked:
The correct header and namespace required for XMCOLOR is DirectXPackedVector.h and DirectX::PackedVector.[/quote]
There's a second documentation bug on that MSDN page - the b/g/r/a values are uint8_t, not uint32_t.

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


It's at the bottom of the page you linked:
The correct header and namespace required for XMCOLOR is DirectXPackedVector.h and DirectX::PackedVector.

There's a second documentation bug on that MSDN page - the b/g/r/a values are uint8_t, not uint32_t.
[/quote]

Excellent thanks. I obviously missed the Community Additions section at the bottom.

Thanks
Ben

This topic is closed to new replies.

Advertisement