Building

Getting source

git clone git://github.com/bkaradzic/bx.git
git clone git://github.com/bkaradzic/bgfx.git

Quick start

These are step for users who use Windows with Visual Studio.

Enter bgfx directory:

cd bgfx

Generate Visual Studio 2013 project files:

..\bx\tools\bin\windows\genie vs2013

Open bgfx solution in Visual Studio 2013:

start .build\projects\vs2013\bgfx.sln

Prerequisites

Android

Download AndroidNDK:

Set following enironment variables:

setx ANDROID_NDK_ROOT <path to AndroidNDK directory>
setx ANDROID_NDK_ARM <path to AndroidNDK directory>\toolchains\arm-linux-androideabi-4.7\prebuilt\windows-x86_64
setx ANDROID_NDK_MIPS <path to AndroidNDK directory>\toolchains\mipsel-linux-android-4.7\prebuilt\windows-x86_64
setx ANDROID_NDK_X86 <path to AndroidNDK directory>\toolchains\x86-4.7\prebuilt\windows-x86_64

Linux

sudo apt-get install libgl1-mesa-dev

Native Client

Download Native Client SDK:

Set following enironment variables:

setx NACL_SDK_ROOT <path to Native Client SDK directory>

Windows

Windows users download GnuWin32 utilities:

When building on Windows, you have to set DXSDK_DIR environment variable to point to DirectX SDK directory.

setx DXSDK_DIR <path to DirectX SDK directory>

If you’re building with Visual Studio 2008, you’ll need TR1 support from: Visual C++ 2008 Feature Pack Release

If you’re building with MinGW/TDM compiler on Windows make DirectX SDK directory link to directory without spaces in the path.

mklink /D c:\dxsdk <path to DirectX SDK directory>
setx DXSDK_DIR c:\dxsdk

Apply this patch to DXSDK from June 2010 to be able to use it with MinGW/TDM.

Build

bgfx uses GENie - Project generator tool to generate project files for various platform. Binaries for Linux, OSX, and Windows are included in bx repository.

General

cd bgfx
make

After calling make, .build/projects/* directory will be generated. All intermediate files generated by compiler will be inside .build directory structure. Deleting .build directory at any time is safe.

make <configuration>

Configuration is <platform>-<debug/release>[32/64]. For example:

linux-release32, nacl-debug64, nacl-arm-debug, pnacl-release,
android-release, etc.

Windows

Visual Studio 2008 command line:

make vs2008-release64

Visual Studio 2008 IDE:

start .build/projects/vs2008/bgfx.sln

Xcode 5

open .build/projects/xcode4/bgfx.xcworkspace

Due to inability to set working directory for an Xcode project from GENie configuration file, it has to be set manually for each example project:

  1. Open “Edit scheme...” dialog for a given project.
  2. Select “Run” settings.
  3. Check “Use custom working directory” and enter following path: ${PROJECT_DIR}/../../../examples/runtime.

Linux

make linux-release64

WinRT / Windows Phone 8.1

../bx/tools/bin/windows/genie --vs=winphone81 vs2013

Build the resulting solution and deploy to device.

Note

Shaders will need to be compiled with the appropriate target profile for your platform.

Amalgamated build

For ease of integration to other build system bgfx library can be built with single .cpp file. It’s only necessary to build src/amalgamated.cpp (for OSX/iOS use src/amalgamated.mm instead) inside different build system.

OculusVR integration

OculusVR support is currently experimental, and only DX11 is tested. To build with OculusVR HMD support enabled you must set OVR_DIR enviroment variable:

set OVR_DIR=<path to OculusSDK>

And generate project files with --with-ovr option:

genie --with-ovr vs2012

In LibOVR/Include create trampoline headers OVR_D3D.h and OVR_GL.h.

OVR_D3D.h should contain:

#include "../Src/OVR_CAPI_D3D.h"

OVR_GL.h should contain:

#include "../Src/OVR_CAPI_GL.h"