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

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

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

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

会生成.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秒,网上又没搜到实时合成的例子,找到一个正弦波合成的,声音听起来断断续续的,我的合成器工程可能移植不过来。

Win7 VS2017编译bgfx图形API的更多相关文章

  1. Win7 VS2017编译Audacity2.1.3

    最近比较热衷折腾大型开源软件编译,因为在逐渐用开源软件替换盗版软件,除去盗版用着不安全的原因外,主要还是因为开源软件有源码,可以学习研究,另外就是体积小. 像Matlab每次装完都用不上什么功能,体积 ...

  2. Win7 VS2017编译Blender2.79

    去年在VS2013环境编译过一次,重装系统后换了VS2017,正好刚编译完Godot3.0.2,顺手把Blender也编译了吧. 官方Windows下编译指南 https://wiki.blender ...

  3. Win7 VS2017编译magnum及例子

    magnum是一个开源的图形中间件 Lightweight and modular C++11/C++14 graphics middleware for games and data visuali ...

  4. Win7 VS2017编译PBR渲染引擎google filament

    按照官方说明 https://github.com/google/filament 前置工具包 Windows 10 SDKVisual Studio 2017Clang 6Python 3.7Git ...

  5. Win7 VS2017编译Godot3.0.2和2.1.4

    千呼万唤屎出来,Godot终于发布3.0版本的源码了,今天是2018年3月17日,自去年接触过后,一直没事就刷刷Gayhub,看看3.0什么时候更新,刷了一年也没结果. 今天上Youtube无意中搜了 ...

  6. bgfx入门练习1——切换图形API驱动模式DX与OpenGL

    翻了下上次编译bgfx是去年2月份的事了,最近正好想试试DX,OpenGL双驱动,看Urho3D和Klayge光封装就头痛,人又懒,写OpenGL时也基本glfw,于是想到bgfx,不如再试试. 发现 ...

  7. 新图形API为unity5 带来了什么&下一代新图形API的好处

    西瓜的演讲ppt翻译+解释+其他: wolf96 在最基本的层面上,这些新api是为了改进CPU性能和效率,通过:减少CPU渲染瓶颈的情况,提供更多可预测和稳定的驱动的行为,给应用程序更多控制,就像在 ...

  8. 32位win7+vs2008编译mysql 5.6.22源码并安装

    以下这部分安装说明是来自http://www.2cto.com/database/201407/316681.html的win7+vs2010源码编译mysql,文章最后会说明用vs2008编译遇见的 ...

  9. WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研

    大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况. 另外,本文对实时光线追踪也进行了简要的 ...

随机推荐

  1. linux拷贝文件夹cp

    方法就是: cp -r dir dir 如果只是拷贝文件的话直接cp即可

  2. go api json 输出尝试

    package main import ( "fmt" "net/http" //"net/url" "github.com/dr ...

  3. vuex状态管理-数据改变不刷新

    困惑: 在页面初始化的时候,我提交到vuex状态管理,然后在获取的时候获取不到,我找到了出错的地点,并进行了修改,然后可以获取到状态 但是不知道原因? 定义了如下的state const state ...

  4. c++ :

    (1)表示机构内位域的定义(即该变量占几个bit空间)   typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX

  5. Windows操作系统的版本

    Windows操作系统的版本号一览 操作系统 PlatformID 主版本号 副版本号 Windows95 1 4 0 Windows98 1 4 10 WindowsMe 1 4 90 Window ...

  6. uva-10382-贪心

    题意:对于长为L,宽为W的矩形草地,需要对它进行浇水,总共有n个水龙头,给每个水龙头的浇水半径,和位置.求覆盖整个草地需要的最小水龙头数量. 如图,把浇水的面积转换成矩形,然后就和区间覆盖一样了,直接 ...

  7. intllij IDE 中git ignore 无法删除target目录下的文件

    原因: git的本地忽略设置必须保证git的远程仓库分支上没有这个要忽略的文件,如果远程分支上存在这个文件,本地在设置ignore 这个文件,将会失败,无法commit忽略.(有人说是git的bug, ...

  8. leetcode101

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  9. 获取relatedTarget属性

    在做mouseenter与mouseleave的兼容时,我们需要用到事件对象的relatedTarget属性 function getRelatedTarget(e) { var t = e.rela ...

  10. bazel build //tensorflow/examples/android:tensorflow_demo报错: fatal error: 'cuda_runtime.h' file not found

    In file included from ./third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:external/eigen_archive/u ...