翻了下上次编译bgfx是去年2月份的事了,最近正好想试试DX,OpenGL双驱动,看Urho3D和Klayge光封装就头痛,人又懒,写OpenGL时也基本glfw,于是想到bgfx,不如再试试。
发现官方Gayhub上更新了几个例子Example,比较烦的这货从来不发布Release,底下不拉不拉写一堆人在用他的库,但是就没一个人反映下这事?
不发个版本号谁知道你每次更新了毛,每个版本间有什么变动,干他娘。
不抱怨了,发现最近牢骚多,有怨妇倾向...
说回主题,相信很多人和我一样,一上来就有点懵逼,这些例子到底是跑在DX还是OpenGL下的?
简单的跟了一下,思路是在bgfx工程src源码下,发现有renderer_d3d9,d3d11和gl等驱动文件,找到
init(函数,下个断点,果不其然断在DX11上了,在我Win7下面是跑在DX11上的,搜了下renderer相关,发现
config.h头部写了这些驱动的判定,如果什么都没定义,就怎么怎么样,但是这样还是没找到具体在哪定义的DX11的。
接着搜了会发现这些驱动在一个叫s_rendererCreator的数组中,搜索这个数组,来到bgfx.cpp
rendererCreate()函数
在if (s_rendererCreator[ii].supported)这句下断点,跟了下,就知道写了个评估算法,score最高的是DX11。
至此知道DX11的由来。
然后再回到config.h头部,加上一句
#define BGFX_CONFIG_RENDERER_OPENGL 1
再看DX11 renderer处已经变灰,并且OpenGL也能断下来了,可以确定是跑在OpenGL下了。
最后在第24个例子nbody上编译运行一下也正常,说明这个nbody是DX,OpenGL都能跑的。
收工,有时间再研究下这个自定义shader到底怎么写,hlsl还是glsl还是什么鬼的。