Those trying out DirectX via Frank D. Luna’s Book (3D Game Programming) would be a little confused because the book occasionally mentions the use of Effects 11 (from the start itself you link the Effects11.lib).

When this book was written DirectX had already a pre-built version of Effects11 Library. But after going through a few blog posts at MSDN, I came across this porting guide. It basically says that the Effects 11 Lib was removed and moved to a new Library FX11.

By default, If you’re on a Windows 8+ you will have issues building this book’s code. One way I thought was best to pull and build the FX11 from Source and Link it. However the repo is far ahead and different from the original code that Frank was referring to.

One of the biggest change was that the “fx_5_0” shader profile is no longer compatible with Windows 10 and the book often recommends using that very same shader:

// This will not work
HRESULT hr = D3DX11CompileEffectFromFile(L"Effects/color.fx", 0, 0, 0, "fx_5_0", shaderFlags, 0, 0, &compiledShader, &compilationMsgs, 0);

// to fix this, pass nullptr in the shader profile as fx_5_0 is deprecated, and use it as:
HRESULT hr = D3DX11CompileEffectFromFile(L"Effects/color.fx", nullptr, 0, shaderFlags, 0, m_d3dDevice.Get(), &mFX, nullptr)

// and in your effects file:
use Vertex Shader vs_4_0_level_9_1
use Pixel Shader ps_4_0_level_9_1

Effects11 is a very nice way to provide re-usable shaders. It generates the them from the effects file automatically and saves redundancy of shader files. For example, we can use the uniform function variables to specify stuff like Lighting Levels, Shadow Levels etc. and generate multiple “techniques” with different levels of each property.