Skip to main content
GameDev.net gamedev.net
🔒 Locked

Beginning Directx

Started by krrice Jan 17, 2013 at 10:38 PM 5 replies 1.6k views
Original Post
krrice
krrice

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.

riverreal
riverreal

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

PKLoki
PKLoki

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?

PwFClockWise
PwFClockWise

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 ^^

NightCreature83
NightCreature83

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.

PwFClockWise
PwFClockWise

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 :D

NightCreature83
NightCreature83

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 http://public.gamedev.net//public/style_emoticons/default/biggrin.png" src="http://public.gamedev.net//public/style_emoticons/default/biggrin.png" class="bbc_emoticon" title=":D" />

The change from 9 to 10 is massive, DX10 changed the whole API and for good reason, the current design is better then what DX9 gave you. DX9 still has to support Fixed Function pipeline which DX10 doesn't have to.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.