Я использую CEGUI 0.8.2. Как я могу загрузить все ресурсы из двоичного файла? Я создал ресурс только DLL, содержащий все необходимые ресурсы, такие как .ttf .font .schema .imageset .looknfeel а также .PNG для набора изображений. Я использую Direct3D рендерер и без графического движка. Я знаю, как загружать ресурсы из файлов, хранящихся на жестком диске, но я хочу инкапсулировать некоторые из этих ресурсов в файл DLL. В текущем API есть несколько способов загрузить его из RawDataContainer
,
например
FontManager::getSingleton().createFromContainer(rawFont);
но это загружает .font xml, который ссылается на font.ttf, так как загрузить ВСЕ ресурсы из двоичного файла? даже файлы .ttf и .png?
Я получил информацию с официального форума cegui, что единственный способ сделать это — создать собственного провайдера ресурсов путем расширения ResourceProvider
класс и реализовать loadRawDataContainer
функция. Затем вы должны вручную инициализировать систему Cegui вместо вызова bootstrapSystem
функция.
Ручная инициализация:
guiRenderer = &Direct3D11Renderer::create(device, context);
if (System::getSingletonPtr()) CEGUI_THROW(InvalidRequestException("CEGUI::System object is already initialised."));
System::create(*guiRenderer, &ceguiResourceProvider); // inject custom resource provider
Других решений пока нет …