Updated 07-callback example.
This commit is contained in:
Родитель
02e549bfec
Коммит
4f908ee911
|
@ -366,7 +366,15 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
|
||||
bgfx::init(bgfx::RendererType::Count /* initialize with default renderer */, &callback, &allocator);
|
||||
// Enumerate supported backend renderers.
|
||||
bgfx::RendererType::Enum renderers[bgfx::RendererType::Count];
|
||||
uint8_t numRenderers = bgfx::getSupportedRenderers(renderers);
|
||||
|
||||
bgfx::init(
|
||||
renderers[bx::getHPCounter() % numRenderers] /* randomize renderer */
|
||||
, &callback // custom callback handler
|
||||
, &allocator // custom allocator
|
||||
);
|
||||
bgfx::reset(width, height, BGFX_RESET_CAPTURE|BGFX_RESET_MSAA_X16);
|
||||
|
||||
// Enable debug text.
|
||||
|
@ -400,6 +408,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
|
||||
float time = 0.0f;
|
||||
|
||||
const bgfx::RendererType::Enum rendererType = bgfx::getRendererType();
|
||||
|
||||
// 5 second 60Hz video
|
||||
for (uint32_t frame = 0; frame < 300; ++frame)
|
||||
{
|
||||
|
@ -421,6 +431,15 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::dbgTextPrintf(13, 3, 0x6f, "caching OpenGL binary shaders, and video capture.");
|
||||
bgfx::dbgTextPrintf( 0, 4, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs);
|
||||
|
||||
bgfx::dbgTextPrintf( 2, 6, 0x0e, "Supported renderers:");
|
||||
for (uint8_t ii = 0; ii < numRenderers; ++ii)
|
||||
{
|
||||
bgfx::dbgTextPrintf( 2, 7+ii, 0x0c, "[%c] %s"
|
||||
, renderers[ii] == rendererType ? '\xfe' : ' '
|
||||
, bgfx::getRendererName(renderers[ii])
|
||||
);
|
||||
}
|
||||
|
||||
float at[3] = { 0.0f, 0.0f, 0.0f };
|
||||
float eye[3] = { 0.0f, 0.0f, -35.0f };
|
||||
|
||||
|
|
|
@ -680,6 +680,9 @@ namespace bgfx
|
|||
/// Returns supported backend API renderers.
|
||||
uint8_t getSupportedRenderers(RendererType::Enum _enum[RendererType::Count]);
|
||||
|
||||
/// Returns name of renderer.
|
||||
const char* getRendererName(RendererType::Enum _type);
|
||||
|
||||
/// Initialize bgfx library.
|
||||
///
|
||||
/// @param _type Select rendering backend. When set to RendererType::Count
|
||||
|
|
17
src/bgfx.cpp
17
src/bgfx.cpp
|
@ -1249,16 +1249,17 @@ namespace bgfx
|
|||
{
|
||||
RendererCreateFn createFn;
|
||||
RendererDestroyFn destroyFn;
|
||||
const char* name;
|
||||
bool supported;
|
||||
};
|
||||
|
||||
static const RendererCreator s_rendererCreator[RendererType::Count] =
|
||||
{
|
||||
{ rendererCreateNULL, rendererDestroyNULL, !!BGFX_CONFIG_RENDERER_NULL }, // Null
|
||||
{ rendererCreateD3D9, rendererDestroyD3D9, !!BGFX_CONFIG_RENDERER_DIRECT3D9 }, // Direct3D9
|
||||
{ rendererCreateD3D11, rendererDestroyD3D11, !!BGFX_CONFIG_RENDERER_DIRECT3D11 }, // Direct3D11
|
||||
{ rendererCreateGL, rendererDestroyGL, !!BGFX_CONFIG_RENDERER_OPENGLES }, // OpenGLES
|
||||
{ rendererCreateGL, rendererDestroyGL, !!BGFX_CONFIG_RENDERER_OPENGL }, // OpenGL
|
||||
{ rendererCreateNULL, rendererDestroyNULL, BGFX_RENDERER_NULL_NAME, !!BGFX_CONFIG_RENDERER_NULL }, // Null
|
||||
{ rendererCreateD3D9, rendererDestroyD3D9, BGFX_RENDERER_DIRECT3D9_NAME, !!BGFX_CONFIG_RENDERER_DIRECT3D9 }, // Direct3D9
|
||||
{ rendererCreateD3D11, rendererDestroyD3D11, BGFX_RENDERER_DIRECT3D11_NAME, !!BGFX_CONFIG_RENDERER_DIRECT3D11 }, // Direct3D11
|
||||
{ rendererCreateGL, rendererDestroyGL, BGFX_RENDERER_OPENGL_NAME, !!BGFX_CONFIG_RENDERER_OPENGLES }, // OpenGLES
|
||||
{ rendererCreateGL, rendererDestroyGL, BGFX_RENDERER_OPENGL_NAME, !!BGFX_CONFIG_RENDERER_OPENGL }, // OpenGL
|
||||
};
|
||||
|
||||
RendererContextI* rendererCreate(RendererType::Enum _type)
|
||||
|
@ -1747,6 +1748,12 @@ again:
|
|||
return num;
|
||||
}
|
||||
|
||||
const char* getRendererName(RendererType::Enum _type)
|
||||
{
|
||||
BX_CHECK(_type < RendererType::Count, "Invalid renderer type %d.", _type);
|
||||
return s_rendererCreator[_type].name;
|
||||
}
|
||||
|
||||
void init(RendererType::Enum _type, CallbackI* _callback, bx::ReallocatorI* _allocator)
|
||||
{
|
||||
BX_TRACE("Init...");
|
||||
|
|
57
src/config.h
57
src/config.h
|
@ -18,41 +18,42 @@
|
|||
|
||||
# ifndef BGFX_CONFIG_RENDERER_DIRECT3D9
|
||||
# define BGFX_CONFIG_RENDERER_DIRECT3D9 (0 \
|
||||
| (BX_PLATFORM_WINDOWS && BX_PLATFORM_WINDOWS < 0x0602 /*_WIN32_WINNT_WIN8*/) \
|
||||
| BX_PLATFORM_XBOX360 \
|
||||
)
|
||||
|| (BX_PLATFORM_WINDOWS && BX_PLATFORM_WINDOWS < 0x0602 /*_WIN32_WINNT_WIN8*/) \
|
||||
|| BX_PLATFORM_XBOX360 \
|
||||
? 1 : 0)
|
||||
# endif // BGFX_CONFIG_RENDERER_DIRECT3D9
|
||||
|
||||
# ifndef BGFX_CONFIG_RENDERER_DIRECT3D11
|
||||
# define BGFX_CONFIG_RENDERER_DIRECT3D11 (0 \
|
||||
| (BX_PLATFORM_WINDOWS && BX_PLATFORM_WINDOWS >= 0x0602 /*_WIN32_WINNT_WIN8*/) \
|
||||
)
|
||||
|| (BX_PLATFORM_WINDOWS && BX_PLATFORM_WINDOWS >= 0x0602 /*_WIN32_WINNT_WIN8*/) \
|
||||
? 1 : 0)
|
||||
# endif // BGFX_CONFIG_RENDERER_DIRECT3D11
|
||||
|
||||
# ifndef BGFX_CONFIG_RENDERER_OPENGL
|
||||
# define BGFX_CONFIG_RENDERER_OPENGL (0 \
|
||||
| BX_PLATFORM_LINUX \
|
||||
| BX_PLATFORM_OSX \
|
||||
)
|
||||
|| BX_PLATFORM_WINDOWS \
|
||||
|| BX_PLATFORM_LINUX \
|
||||
|| BX_PLATFORM_OSX \
|
||||
? 1 : 0)
|
||||
# endif // BGFX_CONFIG_RENDERER_OPENGL
|
||||
|
||||
# ifndef BGFX_CONFIG_RENDERER_OPENGLES
|
||||
# define BGFX_CONFIG_RENDERER_OPENGLES (0 \
|
||||
| BX_PLATFORM_EMSCRIPTEN \
|
||||
| BX_PLATFORM_NACL \
|
||||
| BX_PLATFORM_ANDROID \
|
||||
| BX_PLATFORM_IOS \
|
||||
| BX_PLATFORM_QNX \
|
||||
)
|
||||
|| BX_PLATFORM_EMSCRIPTEN \
|
||||
|| BX_PLATFORM_NACL \
|
||||
|| BX_PLATFORM_ANDROID \
|
||||
|| BX_PLATFORM_IOS \
|
||||
|| BX_PLATFORM_QNX \
|
||||
? 1 : 0)
|
||||
# endif // BGFX_CONFIG_RENDERER_OPENGLES
|
||||
|
||||
# ifndef BGFX_CONFIG_RENDERER_NULL
|
||||
# define BGFX_CONFIG_RENDERER_NULL (!(0 \
|
||||
| BGFX_CONFIG_RENDERER_DIRECT3D9 \
|
||||
| BGFX_CONFIG_RENDERER_DIRECT3D11 \
|
||||
| BGFX_CONFIG_RENDERER_OPENGL \
|
||||
| BGFX_CONFIG_RENDERER_OPENGLES \
|
||||
) )
|
||||
|| BGFX_CONFIG_RENDERER_DIRECT3D9 \
|
||||
|| BGFX_CONFIG_RENDERER_DIRECT3D11 \
|
||||
|| BGFX_CONFIG_RENDERER_OPENGL \
|
||||
|| BGFX_CONFIG_RENDERER_OPENGLES \
|
||||
? 1 : 0) )
|
||||
# endif // BGFX_CONFIG_RENDERER_NULL
|
||||
#else
|
||||
# ifndef BGFX_CONFIG_RENDERER_DIRECT3D9
|
||||
|
@ -110,15 +111,15 @@
|
|||
|
||||
#ifndef BGFX_CONFIG_MULTITHREADED
|
||||
# define BGFX_CONFIG_MULTITHREADED ( (!BGFX_CONFIG_RENDERER_NULL)&&(0 \
|
||||
| BX_PLATFORM_ANDROID \
|
||||
| BX_PLATFORM_IOS \
|
||||
| BX_PLATFORM_LINUX \
|
||||
| BX_PLATFORM_NACL \
|
||||
| BX_PLATFORM_OSX \
|
||||
| BX_PLATFORM_QNX \
|
||||
| BX_PLATFORM_WINDOWS \
|
||||
| BX_PLATFORM_XBOX360 \
|
||||
) )
|
||||
|| BX_PLATFORM_ANDROID \
|
||||
|| BX_PLATFORM_IOS \
|
||||
|| BX_PLATFORM_LINUX \
|
||||
|| BX_PLATFORM_NACL \
|
||||
|| BX_PLATFORM_OSX \
|
||||
|| BX_PLATFORM_QNX \
|
||||
|| BX_PLATFORM_WINDOWS \
|
||||
|| BX_PLATFORM_XBOX360 \
|
||||
? 1 : 0) )
|
||||
#endif // BGFX_CONFIG_MULTITHREADED
|
||||
|
||||
#ifndef BGFX_CONFIG_MAX_DRAW_CALLS
|
||||
|
|
Загрузка…
Ссылка в новой задаче