Page 1 of 1

DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 17:45
by Nyast
Hello,

Sorry if my question seems stupid, I'm new to CEGUI and I've followed all the steps to install/compile the library in Visual Studio 2013 64 bits, so far pretty successfully.

My app utilizes a D3D11 device, so I've been trying to use the DXD11 renderer module. But unless I'm missing something, it just doesn't work. There seems to be something very wrong in the latest CEGUI 0.8.4 version. It includes <d3dx11.h> in cegui-0.8.4\cegui\include\CEGUI\RendererModules\Direct3D11, but D3DX11 is officially no longer part of the D3D library, Microsoft removed it quite some time ago. In fact d3dx11 isn't even present in the Windows Kit 8.X, which is the platform SDK for Windows from MS.

However just quickly browsing at the forums, it seems people don't particularly seem to have trouble working with the DX11 renderer. What am I missing ? What should I do to make it working ?

Thanks,

-Nyast

Re: DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 18:23
by Ident
Nyast wrote:Hello,

Sorry if my question seems stupid, I'm new to CEGUI and I've followed all the steps to install/compile the library in Visual Studio 2013 64 bits, so far pretty successfully.

My app utilizes a D3D11 device, so I've been trying to use the DXD11 renderer module. But unless I'm missing something, it just doesn't work. There seems to be something very wrong in the latest CEGUI 0.8.4 version. It includes <d3dx11.h> in cegui-0.8.4\cegui\include\CEGUI\RendererModules\Direct3D11, but D3DX11 is officially no longer part of the D3D library, Microsoft removed it quite some time ago. In fact d3dx11 isn't even present in the Windows Kit 8.X, which is the platform SDK for Windows from MS.

However just quickly browsing at the forums, it seems people don't particularly seem to have trouble working with the DX11 renderer. What am I missing ? What should I do to make it working ?

Thanks,

-Nyast

This has been discussed many times before. I assume you use Windows 8? In that case maybe below link helps you:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Otherwise install the DirectX June 2010 SDK

Please tell me which path you chose and if this worked for you.

Also:
Some months ago I took myself some days to redo the Direct3D11 Renderer and remove all additional dependencies from it. I made the whole thing smaller, cleaner, and most of all: more similar to the OpenGL Renderer for better maintainment. You can read the related news here:
http://cegui.org.uk/news/created-new-ba ... l-existing

This above change only happened in default branch. Default branch should generally work fine but it is under regular development and you might encounter bugs or you might notice that it will be temporarily broken at some point when you update it later on. Right now it should work. It is still a bit risky to use but if you find a bug we will always try to fix it fast if you report it to us in the forums (this is also true for v0-8 branch of course). If you dont wanna risk it: use one of the stable release or v0-8 branch and get the effects library. Unfortunately I can't fix that Renderer in v0-8 due to ABI compatibility constraints that we follow for our users.

Re: DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 19:04
by Nyast
Hi, and thanks for the reply :)

No, I'm using Windows 7.

Installing the DX June SDK might be tricky, cause my current app's code works with Windows Kit 8.1. Obviously it uses DX11 too, so there might be a conflict of version if I try to setup them both for the same app... I'll try, but I'm pretty sure I'm gonna be screwed :(

For default-branch, I just gave a quick try, but I'm getting a cmake error:

Code: Select all

CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
  Could NOT find GLM (missing: GLM_H_PATH)
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:343 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindGLM.cmake:9 (find_package_handle_standard_args)
  CMakeLists.txt:84 (find_package)


I'm not sure what GLM is, since I didn't have a problem with cmake when I built 0.8.4.

Re: DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 19:16
by lucebac
Please download and compile the dependencies package. Your GLM error will vanish then. For further info, please look here:
http://cegui.org.uk/wiki/Building_from_source

EDIT: and please use CMake 2.8.XX

Re: DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 19:33
by Ident
So which SDK do you use? Lucebac's suggestion is definitely a good start though.

Re: DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 21:07
by Nyast
@Ident: as I mentionned above, the SDK I use is Windows Kit 8.1

I switched to CMake 2.8.12.2 and got the default branch from mercurial.

I think something is wrong with the dependencies. I'm still using the download page's dependencies from the Windows 0.8.4 version, since I couldn't find any link that seems to contain the dependencies for the default branch. I assumed they were the same, but I guess not, cause when I compile CEGUI, I get errors like this:

Code: Select all

1>  Quaternion.cpp
1>..\..\..\cegui\src\Quaternion.cpp(57): error C2039: 'slerp' : is not a member of 'glm'
1>..\..\..\cegui\src\Quaternion.cpp(57): error C3861: 'slerp': identifier not found
1>..\..\..\cegui\src\Quaternion.cpp(70): error C2039: 'slerp' : is not a member of 'glm'
1>..\..\..\cegui\src\Quaternion.cpp(70): error C3861: 'slerp': identifier not found


Please note that building the CEGUI-Deps themselves works without error ( for the 28 projects ). That only happens when compiling CEGUI itself.

So yeah, the page that lucebac linked above contains the list of library dependencies, but I'm not gonna update them one-by-one if the reason I'm getting that error is because of a disprecency between the default branch and the 0.8.4 deps. There are a shitton of projects, it'd take many hours... is there any other place where they're available to download/build as one ?

Re: DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 21:17
by lucebac
I switched to CMake 2.8.12.2 and got the default branch from mercurial.

Please: don't use default branch if you want to create a somewhat stable application. Use v0-8 branch instead.

Nyast wrote:I think something is wrong with the dependencies. I'm still using the download page's dependencies from the Windows 0.8.4 version, since I couldn't find any link that seems to contain the dependencies for the default branch. I assumed they were the same, but I guess not, cause when I compile CEGUI, I get errors like this:

Code: Select all

1>  Quaternion.cpp
1>..\..\..\cegui\src\Quaternion.cpp(57): error C2039: 'slerp' : is not a member of 'glm'
1>..\..\..\cegui\src\Quaternion.cpp(57): error C3861: 'slerp': identifier not found
1>..\..\..\cegui\src\Quaternion.cpp(70): error C2039: 'slerp' : is not a member of 'glm'
1>..\..\..\cegui\src\Quaternion.cpp(70): error C3861: 'slerp': identifier not found


This disappears when you use v0-8 branch.

And: don't mix dependencies for v0-8 with CEGUI default branch and vice versa!

Re: DirectX11 renderer dependency on D3DX ?

Posted: Mon Sep 15, 2014 21:21
by Nyast
lucebac wrote:
I switched to CMake 2.8.12.2 and got the default branch from mercurial.

Please: don't use default branch if you want to create a somewhat stable application. Use v0-8 branch instead.


Right, but the root of my issues is that I can't use the 0.8 branch. It uses an obsolete DX11 renderer that has a dependency on D3DX11, which does not exist anymore.

lucebac wrote:
I switched to CMake 2.8.12.2 and got the default branch from mercurial.

And: don't mix dependencies for v0-8 with CEGUI default branch and vice versa!


Well, I have to use the default branch, but the dependencies for 0.8 don't work, so what am I supposed to do ?

At this point, I feel like I'm stuck and can't do anything to make it work.. sigh..

Re: DirectX11 renderer dependency on D3DX ?

Posted: Tue Sep 16, 2014 06:05
by Ident
Nyast wrote:Right, but the root of my issues is that I can't use the 0.8 branch. It uses an obsolete DX11 renderer that has a dependency on D3DX11, which does not exist anymore.

Even if you wanted to use 0.8, it is definitely possible to do a workaround here. It is not like you are the only one affected by this change.
These links might help if you want to go that path:
http://stackoverflow.com/questions/1254 ... tudio-2012
https://fx11.codeplex.com/


Nyast wrote:I think something is wrong with the dependencies. I'm still using the download page's dependencies from the Windows 0.8.4 version, since I couldn't find any link that seems to contain the dependencies for the default branch.

Please read the responses next time more thoroughly and follow what is suggested to you. Lucebac said everything right and linked you to the API docu which mentions to the place you can find the latest dependencies:
https://bitbucket.org/cegui/cegui-dependencies

Simply download this and build it. The repository version currently works with both 0.8.X and the default branch. I use it myself all the time and I can run D3D11 Renderer on default without issues.
Tell us if this worked for you.

Re: DirectX11 renderer dependency on D3DX ?

Posted: Tue Sep 16, 2014 18:54
by Nyast
Okay thanks, I finally got it working :)

Re: DirectX11 renderer dependency on D3DX ?

Posted: Tue Sep 16, 2014 19:01
by Ident
Nyast wrote:Okay thanks, I finally got it working :)

Default or v0-8?

Re: DirectX11 renderer dependency on D3DX ?

Posted: Wed Sep 17, 2014 21:13
by Nyast
V0.8 for now, but I'll eventually switch to default since it should work too.

Btw, do you have plans to update the DX11 renderer into the future version ? Like in 0.9 ?

Re: DirectX11 renderer dependency on D3DX ?

Posted: Thu Sep 18, 2014 06:50
by Ident
Nyast wrote:V0.8 for now, but I'll eventually switch to default since it should work too.

Btw, do you have plans to update the DX11 renderer into the future version ? Like in 0.9 ?

There won't be a 0.9
The next Release will be major. It will happen early 2015 and it will be version 1.0 and contain the new D3D11 Renderer, the old ones were removed as stated in the CEGUI news, which also stated reasons for this step.
Since it generally doesn't make sense for us to backport the new D3D11 Renderer to v0-8, we will not do it. If you want us to backport this Renderer then we can offer you to do it as paid support : http://cegui.org.uk/paid-support