Description
I'm just trying out Diligent Graphics and I've run into a problem right on the start when trying to initialize the engine. The "API Basics" article says that I need to add the following folders to my include paths:
diligentcore\Graphics\GraphicsEngineD3D11\interface
diligentcore\Graphics\GraphicsEngineD3D12\interface
diligentcore\Graphics\GraphicsEngineOpenGL\interface
But it seems that many more paths are needed when compiling the top level graphics includes. For example, the file "EngineD3D11Attribs.h" includes the file "BasicTypes.h", which is in a totally different folder and can't be found with just the paths given above.
I looked at the samples, and I see that they include many more paths in their settings. 15 paths in case of the SampleBase project...
Correct me if I'm wrong, but this seems very messy, uncomforatble for the end user, and also error prone (if you end up with two files of the same name in different paths, which might be true for large projects).
Wouldn't it be better to use relative paths inside the includes, like this:
#include "....\diligentcore\primitives\interface\basictypes.h"
or like this:
#include <diligentcore\primitives\interface\basictypes.h>
?
The first option doesn't force the end user of the engine to add any paths whatsoever to their proejct, they just need a way to localize the include file they are using. The second way assumes that just one path needs to be defined, in this case this is the top-level engine folder. Most of the libraries I worked with, have a single "includes" folder that needs to be added and they use relative paths inside. I think this is the standard and proven way.
Can you consider fixing this? Or do you have a list of paths that actually need to be included to use different modules?
Anyway, thanks for sharing your code and writing all the awesome articles on Gamasutra :)