下载 OpenAL 的话,配置环境变量到 OpenAL 1.1 SDK 就好了
我的 cmake 的 FindOpenAL 里面会添加 OpenAL 的库,所以我不知道为什么原仓库会把那个判断是否已经存在 OpenAL 库的语句注释掉……我就加回来了
Sources\CMakeLists.txt
# OpenAL must be installed on the system, env "OPENALDIR" must be set
find_package(OpenALSoft)
find_package(OpenAL)
if(OPENALSOFT_FOUND)#if(OPENALSOFT_FOUND AND NOT TARGET OpenAL::OpenAL)add_library(OpenAL::OpenAL UNKNOWN IMPORTED)set_target_properties(OpenAL::OpenAL PROPERTIESIMPORTED_LOCATION "${OPENALSOFT_LIBRARY}"INTERFACE_INCLUDE_DIRECTORIES "${OPENALSOFT_INCLUDE_DIR}")#endif()
elseif(OPENAL_FOUND)if(NOT TARGET OpenAL::OpenAL)add_library(OpenAL::OpenAL UNKNOWN IMPORTED)endif()set_target_properties(OpenAL::OpenAL PROPERTIESIMPORTED_LOCATION "${OPENAL_LIBRARY}"INTERFACE_INCLUDE_DIRECTORIES "${OPENAL_INCLUDE_DIR}")
else()message(FATAL_ERROR "Could not find OpenAL or OpenAL-Soft")
endif()
配置了环境变量之后,记得要重新打开 VS Code 才能更新到最新的环境变量
然后是配置 pkg config
https://stackoverflow.com/questions/1710922/how-to-install-pkg-config-in-windows
然后是安装 bzip2
我已经用 vcpkg 安装了 bzip2,我也确定安装的是 x64 的,设置了环境变量 VCPKG_DEFAULT_TRIPLET=x64-windows
然后是在 Acid\build\Tests\Editor 中找不到 EditorTest.dll
但是我在 bin 文件夹中是可以找到的,于是我就手动复制过去了
然后就是没有 glfw window 的错误
这个创建 glfw window 的时机也是有讲究的,需要在创建了 Windows module 之后,在那些连接到 onAddWindow 信号的 module 的创建之后,在那些需要 glfw window 的 module 之前
一个 hack 的方法是记住需要 glfw window 的 module 的序号,在那个序号的位置之前调用 AddWindow()
Sources\Engine\Engine.cpp
void Engine::CreateModule(Module::TRegistryMap::const_iterator it, const ModuleFilter &filter) {if (modules.find(it->first) != modules.end())return;if (!filter.Check(it->first))return;// hackif (modules.size() == 10)Windows::Get()->AddWindow();
但是这样肯定是跟原仓库的设计者的设计思路是相违背的
还有一种方法是在获取 glfw window 的时候,判断如果自己没有 glfw window,那么就创建一个
虽然照样不太优雅,但是比把 Window 逻辑写到引擎初始化的底层更好
Sources\Devices\Windows.cpp
Window *Windows::GetWindow(WindowId id) {// hackif (windows.size() == 0 && id == 0)AddWindow();if (id >= windows.size())return nullptr;return windows.at(id).get();
}