[✔️]openal/openalut 编译使用

300 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 27 天,点击查看活动详情

在linux环境下编译

  • usr/local/bin/libopenal.so
git clone https://github.com/JogAmp/openal-soft
cd build
cmake ..
make
sudo make install # 安装
  • usr/local/bin/libalut.so
git clone https://github.com/vancegroup/freealut
mkdir build
cd build
cmake ..
sudo make install

在linux中非常顺利,都能编译通过

在windows下编译

openal的编译使用cmake可以正常编译通过,但是到了alut就出现了问题

find_package(OpenAL REQUIRED)

无法找到OpenAL,在linux中没有遇到这个问题是因为make install已经正确将OpenAl安装到了usr/local/bin,并且在usr/local/bin/cmake下有相应的make文件,保证cmake可以正常识别到。

windows下CMake如何正确find_packge模块呢? 其实cmake自身也有关于OpenAl的查找逻辑:

  • cmake\share\cmake-3.25\Modules\FindOpenAL.cmake
find_path(OPENAL_INCLUDE_DIR al.h
 HINTS
   ENV OPENALDIR
 PATHS
   ~/Library/Frameworks
   /Library/Frameworks
   /opt
   [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir]
 PATH_SUFFIXES include/AL include/OpenAL include AL OpenAL
 )
 
find_library(OPENAL_LIBRARY
 NAMES OpenAL al openal OpenAL32
 HINTS
   ENV OPENALDIR
 PATHS
   ~/Library/Frameworks
   /Library/Frameworks
   /opt
   [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir]
 PATH_SUFFIXES libx32 lib64 lib libs64 libs ${_OpenAL_ARCH_DIR}
 )  

可以看到是从OPENALDIR环境变量中查找,所以只需要环境变量中有指向包含al.h OpenAl32.dll的目录即可

设置环境变量后,一定要记得重启CMD环境,否则环境变量不生效

alut的注意事项

OpenGL有glut,同理OpenAL也有alut。

alut是动态库,注意alut.dll的输出路径:

image.png 引用alut的时候,记得alut.h头文件,直接将alut的源码放到项目是不行的,因为alut的接口都声明了dll export,所以不得不编译出dll后放到项目中。

alut本质上还是对openal的一层封装,只是简化了使用难度,因为openal本身也没有几个函数,所以alut的函数也不多,所以不建议使用alut,直接使用openal能够让自己对api更熟悉。