下载 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 PROPERTIES
IMPORTED_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 PROPERTIES
IMPORTED_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;
// hack
if (modules.size() == 10)
Windows::Get()->AddWindow();
但是这样肯定是跟原仓库的设计者的设计思路是相违背的
还有一种方法是在获取 glfw window 的时候,判断如果自己没有 glfw window,那么就创建一个
虽然照样不太优雅,但是比把 Window 逻辑写到引擎初始化的底层更好
Sources\Devices\Windows.cpp
Window *Windows::GetWindow(WindowId id) {
// hack
if (windows.size() == 0 && id == 0)
AddWindow();
if (id >= windows.size())
return nullptr;
return windows.at(id).get();
}