Hi everyone, I want to start learning DirectX. So I purchased Introduction to 3D Game Programming with DirectX 11 by Frank Luna. Well I guess my laptops video card (Radeon HD 4250) doesn't fully support the code in the book. So i was wondering if I started learning DirectX 9 will what I learn transfer to 11 or will I be wasting my time? I plan on getting a new Laptop/PC soon but it will probably be a while.
Beginning Directx
#2 Members - Reputation: 518
Posted 17 January 2013 - 04:58 PM
I'm not sure but you can change the feature level to 9_1
"With Direct3D 11, a new paradigm is introduced called feature levels. A feature level is a well defined set of GPU functionality. For instance, the 9_1 feature level implements the functionality that was implemented in Microsoft Direct3D 9, which exposes the capabilities of shader models ps_2_x and vs_2_x, while the 11_0 feature level implements the functionality that was implemented in Direct3D 11."
http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx
#3 Members - Reputation: 363
Posted 18 January 2013 - 02:22 AM
Just to add to riverreal's comment, the section of Luna's book you're after is 4.2.1 "Create The Device And Context" which discusses passing in and retrieving D3D_FEATURE_LEVEL flags to control what feature level you want to support, and what feature level is actually available. Bear in mind that if you use a lower feature level then some (probably many) of the features later in the book will not be supported.
Incidentally, do you know what feature level your GPU should support? My laptop GPU only supports DX11 if I force it to use accelerated graphics via the nVidia control panel. Maybe you just need to do something similar with the ATI one?
Edited by BarrySkellern, 18 January 2013 - 02:23 AM.
Find me on Twitter @BarrySkellern (I am awful on Twitter)
#4 Members - Reputation: 213
Posted 18 January 2013 - 06:45 AM
Well, I also had a computer that did not support the DirectX11, and the only thing I had to change was this line: D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, &featureLevel, 1, D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext);
To this instead: D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_REFERENCE, NULL, 0, &featureLevel, 1, D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext);
This will allow you to do everything in DirectX11, but will use the CPU to draw instead of the Graphics Hardware. Obviously this will lower your FPS by like a 1000 times, so you will have like 0.1 fps or something. But it will work ^^
www.sc2pwf.se
#5 Crossbones+ - Reputation: 1158
Posted 18 January 2013 - 07:11 AM
You shouldn't try to learn DX9 at the moment any more, from a developers point of view it is an atiquated API and most companies have moved on to DX11 for PC and only use it for the X360 part of their engine (and even there it isn't a pure DX9.0c implementation). Most companies now have dropped XP support and with it DX9 as their renderpath and have chosen to use DX 11 and it's feature levels.
#6 Members - Reputation: 213
Posted 18 January 2013 - 09:09 AM
I haven't learned any DX9 since DX10 was available when I started studying the subject. I don't know how much the DX9 differs from DX10, but the difference between DX10 and DX11 isn't big at all. I had no problems what so ever to switch to DX11, so in that regard I don't think there would be too hard for you to switch from DX9 to DX11 when you can.
But, then again, I don't know how much DX9 differs from DX10. Hopefully this was of any use to you ![]()
www.sc2pwf.se
#7 Crossbones+ - Reputation: 1158
Posted 18 January 2013 - 01:59 PM






