官方的编译指南在这个页面

https://bkaradzic.github.io/bgfx/build.html#quick-start

目前的版本编译比较简单,下载3个项目,放于同级目录下

https://github.com/bkaradzic/bgfx

https://github.com/bkaradzic/bimg

https://github.com/bkaradzic/bx

Win7 VS2017编译bgfx图形API-LMLPHP

进入bgfx目录下,建立vs2017.bat文件,内容如下并运行,如果是其他版本,比如vs2015就换成其他的

..\bx\tools\bin\windows\genie.exe --with-tools --with-examples --with-shared-lib vs2017

Win7 VS2017编译bgfx图形API-LMLPHP

会生成.build目录及工程,之后打开

bgfx\.build\projects\vs2017\bgfx.sln

就可以了

如果想编译SDL2版本

..\bx\tools\bin\windows\genie.exe --with-sdl --with-tools --with-examples --with-shared-lib vs2017

然后环境变量和工程中加入SDL的include和lib目路就行了。

为什么使用SDL2,因为bgfx自带的例子似乎不能支持手柄,至少我这破北通手柄用不了,而SDL2,GFLW,SFML甚至DInput都能正常识别。

有趣的是bgfx这个SDL2,初始化时只使用了SDL_INIT_GAMECONTROLLER,而没有Video和Audio,并且跟踪源码可以看到,图形驱动还是用的bgfx自己的DX,OpenGL等,SDL2这里似乎只是接入了手柄和消息循环等处理。

所以音频这部分,我在考虑怎么办,是用SDL Mixer还是用SFML,SFML一般音频处理比较方便,并且是C++源码,可读性高,还能直接用Buffer得到整个音频解码后的采样,做个FFT比较简单。

SDL Mixer虽然自带的例子也有波形显示,但是是在回调函数中实现的,虽然回调时用较少的实时buf占用内存更少,SFML的Buffer加载整首歌可能会占20至100 MB,视音频长度而定,但是如果做其他处理,比如音频编辑需要整首的,就方便很多,

并且这年头内存根本不是问题。唯一的问题是,SFML可能无法做音频实时合成,因为他的音频缓冲默认似乎是2秒,网上又没搜到实时合成的例子,找到一个正弦波合成的,声音听起来断断续续的,我的合成器工程可能移植不过来。

05-11 13:51