У меня есть 3 статические библиотеки graphics.lib, graphics_opengl.lib и graphics_d3d.lib
из graphics.lib:
class DeviceInfo
{
public:
std::string name;
};
class GenericGraphicDevice
{
public:
// example function populating info_out with generic device information.
virtual void GetDeviceinfo( DeviceInfo &info_out );
//...
};
из graphics_opengl.lib:
class OpenGLDeviceInfo : public DeviceInfo
{
public:
int gl_version;
};
class OpenGLGraphicDevice : public GenericGraphicDevice
{
public:
// example function populating info_out with gl specific device info and
// probably calling the base function it overrides to pick up the generic data.
virtual void GetDeviceInfo( DeviceInfo &info_out );
//...
};
Те же настройки, что и для graphics_d3d.lib.
Итак, у меня есть 4 проекта, открытых в моем решении Visual Studio. 1 для игры, затем 1 для каждой библиотеки.
Вариант 1) Я ссылаюсь на проекты d3d и opengl в общем графическом проекте, поэтому мой порядок сборки:
d3d OR opengl
Then graphics
Вариант 2) d3d и opengl ссылаются на общую графику, поэтому мой порядок сборки:
graphics
d3d OR opengl
На мой взгляд, d3d и opengl наследуют объекты от графики, так как они могут правильно компилироваться / связываться, когда графика еще не построена?
Поэтому я некоторое время создавал локальные сборки, используя Вариант 2, но недавно обнаружил, что другие разработчики используют Вариант 1.
Буду очень признателен за любые разъяснения, правильное или неправильное мое мышление здесь и почему.