mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-28 10:35:43 -05:00
Merge remote-tracking branch 'refs/remotes/bgfx_bkaradzic/master'
This commit is contained in:
commit
88e6ce0a33
54 changed files with 4640 additions and 193 deletions
2064
3rdparty/stb_truetype/stb_truetype.h
vendored
Normal file
2064
3rdparty/stb_truetype/stb_truetype.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
|||
bgfx
|
||||
bgfx {#mainpage}
|
||||
====
|
||||
|
||||
https://github.com/bkaradzic/bgfx
|
||||
|
@ -43,7 +43,7 @@ Premake 4.4 beta4
|
|||
[http://industriousone.com/premake/download](http://industriousone.com/premake/download)
|
||||
|
||||
GNU make and CoreUtils
|
||||
Windows users download GNU make utility from:
|
||||
Windows users download GNU utilities from:
|
||||
[http://gnuwin32.sourceforge.net/packages/make.htm](http://gnuwin32.sourceforge.net/packages/make.htm)
|
||||
[http://gnuwin32.sourceforge.net/packages/coreutils.htm](http://gnuwin32.sourceforge.net/packages/coreutils.htm)
|
||||
|
||||
|
@ -172,7 +172,7 @@ Internals
|
|||
---------
|
||||
|
||||
bgfx is using sort-based draw call bucketing. This means that submission order
|
||||
doesn't necessarily matches the rendering order, but on the low-level they
|
||||
doesn't necessarily match the rendering order, but on the low-level they
|
||||
will be sorted and ordered correctly. On the high level this allows
|
||||
more optimal way of submitting draw calls for all passes at one place, and on
|
||||
the low-level this allows better optimization of rendering order. This sometimes
|
||||
|
@ -299,6 +299,9 @@ Bunny
|
|||
Uffizi
|
||||
[Light Probe Image Gallery ](http://www.pauldebevec.com/Probes/)
|
||||
|
||||
Droid Sans
|
||||
[http://www.fontsquirrel.com/license/Droid-Sans](http://www.fontsquirrel.com/license/Droid-Sans)
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
|
|
@ -99,7 +99,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -183,6 +183,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
|
@ -199,14 +201,14 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
const double freq = double(bx::getHPFrequency() );
|
||||
const double toMs = 1000.0/freq;
|
||||
|
||||
float time = (float)( (now-timeOffset)/double(bx::getHPFrequency() ) );
|
||||
|
||||
// Use debug font to print information about this example.
|
||||
bgfx::dbgTextClear();
|
||||
bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/01-cube");
|
||||
bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Rendering simple static mesh.");
|
||||
bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs);
|
||||
|
||||
float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) );
|
||||
|
||||
// Submit 11x11 cubes.
|
||||
for (uint32_t yy = 0; yy < 11; ++yy)
|
||||
{
|
||||
|
|
|
@ -499,7 +499,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -572,6 +572,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
const uint32_t zpitch = DIMS*DIMS;
|
||||
const float invdim = 1.0f/float(DIMS-1);
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
|
@ -587,6 +589,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
last = now;
|
||||
const double freq = double(bx::getHPFrequency() );
|
||||
const double toMs = 1000.0/freq;
|
||||
float time = (float)( (now - timeOffset)/double(bx::getHPFrequency() ) );
|
||||
|
||||
// Use debug font to print information about this example.
|
||||
bgfx::dbgTextClear();
|
||||
|
@ -604,8 +607,6 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) );
|
||||
|
||||
// Stats.
|
||||
uint32_t numVertices = 0;
|
||||
int64_t profUpdate = 0;
|
||||
|
|
|
@ -178,7 +178,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -232,6 +232,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
|
||||
bgfx::ProgramHandle raymarching = loadProgram("vs_raymarching", "fs_raymarching");
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
|
@ -274,7 +276,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(1, NULL, ortho);
|
||||
|
||||
float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) );
|
||||
float time = (float)( (bx::getHPCounter()-timeOffset)/double(bx::getHPFrequency() ) );
|
||||
|
||||
float vp[16];
|
||||
mtxMul(vp, view, proj);
|
||||
|
|
|
@ -283,7 +283,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -331,6 +331,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
Mesh mesh;
|
||||
mesh.load("meshes/bunny.bin");
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
|
@ -346,7 +348,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
last = now;
|
||||
const double freq = double(bx::getHPFrequency() );
|
||||
const double toMs = 1000.0/freq;
|
||||
float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) );
|
||||
float time = (float)( (bx::getHPCounter()-timeOffset)/double(bx::getHPFrequency() ) );
|
||||
bgfx::setUniform(u_time, &time);
|
||||
|
||||
// Use debug font to print information about this example.
|
||||
|
|
|
@ -99,7 +99,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -172,6 +172,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::destroyVertexShader(vsh);
|
||||
bgfx::destroyFragmentShader(fsh);
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
|
@ -187,6 +189,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
last = now;
|
||||
const double freq = double(bx::getHPFrequency() );
|
||||
const double toMs = 1000.0/freq;
|
||||
float time = (float)( (now - timeOffset)/double(bx::getHPFrequency() ) );
|
||||
|
||||
// Use debug font to print information about this example.
|
||||
bgfx::dbgTextClear();
|
||||
|
@ -205,8 +208,6 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) );
|
||||
|
||||
const uint16_t instanceStride = 80;
|
||||
const bgfx::InstanceDataBuffer* idb = bgfx::allocInstanceDataBuffer(121, instanceStride);
|
||||
if (NULL != idb)
|
||||
|
|
|
@ -255,7 +255,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -348,6 +348,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
mem = loadTexture("fieldstone-n.dds");
|
||||
bgfx::TextureHandle textureNormal = bgfx::createTexture(mem);
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
|
@ -364,7 +366,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
const double freq = double(bx::getHPFrequency() );
|
||||
const double toMs = 1000.0/freq;
|
||||
|
||||
float time = (float)(now/freq);
|
||||
float time = (float)( (now-timeOffset)/freq);
|
||||
|
||||
// Use debug font to print information about this example.
|
||||
bgfx::dbgTextClear();
|
||||
|
|
|
@ -130,7 +130,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -228,6 +228,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t miss = 0;
|
||||
std::list<PackCube> quads;
|
||||
|
||||
int64_t timeOffset = bx::getHPCounter();
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
{
|
||||
// Set view 0 default viewport.
|
||||
|
@ -243,6 +245,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
last = now;
|
||||
const int64_t freq = bx::getHPFrequency();
|
||||
const double toMs = 1000.0/double(freq);
|
||||
float time = (float)( (now - timeOffset)/double(bx::getHPFrequency() ) );
|
||||
|
||||
// Use debug font to print information about this example.
|
||||
bgfx::dbgTextClear();
|
||||
|
@ -310,8 +313,6 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
// Set view and projection matrix for view 0.
|
||||
bgfx::setViewTransform(0, view, proj);
|
||||
|
||||
float time = (float)(bx::getHPCounter()/double(bx::getHPFrequency() ) );
|
||||
|
||||
float mtx[16];
|
||||
mtxRotateXY(mtx, time, time*0.37f);
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
#include "../common/dbg.h"
|
||||
#include "../common/math.h"
|
||||
#include "../common/processevents.h"
|
||||
#include "../common/imgui/imgui.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
@ -257,12 +257,12 @@ struct Mesh
|
|||
|
||||
// Set render states.
|
||||
bgfx::setState(0
|
||||
|BGFX_STATE_RGB_WRITE
|
||||
|BGFX_STATE_ALPHA_WRITE
|
||||
|BGFX_STATE_DEPTH_WRITE
|
||||
|BGFX_STATE_DEPTH_TEST_LESS
|
||||
|BGFX_STATE_CULL_CCW
|
||||
|BGFX_STATE_MSAA
|
||||
| BGFX_STATE_RGB_WRITE
|
||||
| BGFX_STATE_ALPHA_WRITE
|
||||
| BGFX_STATE_DEPTH_WRITE
|
||||
| BGFX_STATE_DEPTH_TEST_LESS
|
||||
| BGFX_STATE_CULL_CCW
|
||||
| BGFX_STATE_MSAA
|
||||
);
|
||||
|
||||
// Submit primitive for rendering to view 0.
|
||||
|
@ -410,7 +410,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
uint32_t width = 1280;
|
||||
uint32_t height = 720;
|
||||
uint32_t debug = BGFX_DEBUG_TEXT;
|
||||
uint32_t reset = BGFX_RESET_NONE;
|
||||
uint32_t reset = BGFX_RESET_VSYNC;
|
||||
|
||||
bgfx::init();
|
||||
bgfx::reset(width, height);
|
||||
|
@ -493,10 +493,32 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::RenderTargetHandle blur;
|
||||
blur = bgfx::createRenderTarget(width/8, height/8, BGFX_RENDER_TARGET_COLOR_RGBA8);
|
||||
|
||||
FILE* file = fopen("font/droidsans.ttf", "rb");
|
||||
uint32_t size = (uint32_t)fsize(file);
|
||||
void* data = malloc(size);
|
||||
size_t ignore = fread(data, 1, size, file);
|
||||
BX_UNUSED(ignore);
|
||||
fclose(file);
|
||||
|
||||
imguiCreate(data, size);
|
||||
|
||||
free(data);
|
||||
|
||||
float speed = 0.37f;
|
||||
float middleGray = 0.18f;
|
||||
float white = 1.1f;
|
||||
float treshold = 1.5f;
|
||||
|
||||
int32_t scrollArea = 0;
|
||||
|
||||
uint32_t oldWidth = 0;
|
||||
uint32_t oldHeight = 0;
|
||||
|
||||
while (!processEvents(width, height, debug, reset) )
|
||||
MouseState mouseState;
|
||||
|
||||
float time = 0.0f;
|
||||
|
||||
while (!processEvents(width, height, debug, reset, &mouseState) )
|
||||
{
|
||||
if (oldWidth != width
|
||||
|| oldHeight != height)
|
||||
|
@ -513,6 +535,28 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
blur = bgfx::createRenderTarget(width/8, height/8, BGFX_RENDER_TARGET_COLOR_RGBA8);
|
||||
}
|
||||
|
||||
imguiBeginFrame(mouseState.m_mx
|
||||
, mouseState.m_my
|
||||
, (mouseState.m_buttons[entry::MouseButton::Left ] ? IMGUI_MBUT_LEFT : 0)
|
||||
| (mouseState.m_buttons[entry::MouseButton::Right ] ? IMGUI_MBUT_RIGHT : 0)
|
||||
, 0
|
||||
, width
|
||||
, height
|
||||
);
|
||||
|
||||
imguiBeginScrollArea("Settings", width - width / 5 - 10, 10, width / 5, height / 3, &scrollArea);
|
||||
imguiSeparatorLine();
|
||||
|
||||
imguiSlider("Speed", &speed, 0.0f, 1.0f, 0.01f);
|
||||
imguiSeparator();
|
||||
|
||||
imguiSlider("Middle gray", &middleGray, 0.1f, 1.0f, 0.01f);
|
||||
imguiSlider("White point", &white, 0.1f, 2.0f, 0.01f);
|
||||
imguiSlider("Treshold", &treshold, 0.1f, 2.0f, 0.01f);
|
||||
|
||||
imguiEndScrollArea();
|
||||
imguiEndFrame();
|
||||
|
||||
// This dummy draw call is here to make sure that view 0 is cleared
|
||||
// if no other draw calls are submitted to view 0.
|
||||
bgfx::submit(0);
|
||||
|
@ -524,7 +568,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
const double freq = double(bx::getHPFrequency() );
|
||||
const double toMs = 1000.0/freq;
|
||||
|
||||
float time = (float)(now/freq);
|
||||
time += (float)(frameTime*speed/freq);
|
||||
|
||||
bgfx::setUniform(u_time, &time);
|
||||
|
||||
|
@ -588,7 +632,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
float mtx[16];
|
||||
mtxRotateXY(mtx
|
||||
, 0.0f
|
||||
, time*0.37f
|
||||
, time
|
||||
);
|
||||
|
||||
float temp[4];
|
||||
|
@ -653,7 +697,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
screenSpaceQuad(1.0f, 1.0f, s_flipV);
|
||||
bgfx::submit(6);
|
||||
|
||||
float tonemap[4] = { 0.18f, square(1.1f), 1.5f, 0.0f };
|
||||
float tonemap[4] = { middleGray, square(white), treshold, 0.0f };
|
||||
bgfx::setUniform(u_tonemap, tonemap);
|
||||
|
||||
// Bright pass treshold is tonemap[3].
|
||||
|
@ -686,6 +730,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
|
|||
bgfx::frame();
|
||||
}
|
||||
|
||||
imguiDestroy();
|
||||
|
||||
// Cleanup.
|
||||
mesh.unload();
|
||||
|
||||
|
|
|
@ -12,24 +12,7 @@
|
|||
|
||||
#include "dbg.h"
|
||||
#include <bx/string.h>
|
||||
|
||||
#if BX_PLATFORM_ANDROID
|
||||
# include <android/log.h>
|
||||
#elif BX_PLATFORM_WINDOWS || BX_PLATFORM_XBOX360
|
||||
extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA(const char* _str);
|
||||
#endif // BX_PLATFORM_WINDOWS
|
||||
|
||||
void dbgOutput(const char* _out)
|
||||
{
|
||||
#if BX_PLATFORM_ANDROID
|
||||
__android_log_write(ANDROID_LOG_DEBUG, "", _out);
|
||||
#elif BX_PLATFORM_WINDOWS || BX_PLATFORM_XBOX360
|
||||
OutputDebugStringA(_out);
|
||||
#elif BX_PLATFORM_NACL || BX_PLATFORM_LINUX || BX_PLATFORM_OSX
|
||||
fputs(_out, stderr);
|
||||
fflush(stderr);
|
||||
#endif // BX_PLATFORM_
|
||||
}
|
||||
#include <bx/debug.h>
|
||||
|
||||
void dbgPrintfVargs(const char* _format, va_list _argList)
|
||||
{
|
||||
|
@ -42,7 +25,7 @@ void dbgPrintfVargs(const char* _format, va_list _argList)
|
|||
len = bx::vsnprintf(out, len, _format, _argList);
|
||||
}
|
||||
out[len] = '\0';
|
||||
dbgOutput(out);
|
||||
bx::debugOutput(out);
|
||||
}
|
||||
|
||||
void dbgPrintf(const char* _format, ...)
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#define __DBG_H__
|
||||
|
||||
#include <stdarg.h> // va_list
|
||||
#include <stdint.h>
|
||||
|
||||
#define DBG_STRINGIZE(_x) DBG_STRINGIZE_(_x)
|
||||
#define DBG_STRINGIZE_(_x) #_x
|
||||
|
|
58
examples/common/imgui/fs_imgui_color.bin.h
Normal file
58
examples/common/imgui/fs_imgui_color.bin.h
Normal file
|
@ -0,0 +1,58 @@
|
|||
static const uint8_t fs_imgui_color_dx9[137] =
|
||||
{
|
||||
0x46, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x03, 0xff, 0xff, // FSH....I..|.....
|
||||
0xfe, 0xff, 0x16, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, // ....CTAB....#...
|
||||
0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, // ................
|
||||
0x1c, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, // ....ps_3_0.Micro
|
||||
0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, // soft (R) HLSL Sh
|
||||
0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, // ader Compiler 9.
|
||||
0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0x1f, 0x00, 0x00, 0x02, // 29.952.3111.....
|
||||
0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, // ................
|
||||
0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // .........
|
||||
};
|
||||
static const uint8_t fs_imgui_color_dx11[494] =
|
||||
{
|
||||
0x46, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, // FSH....I........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x44, 0x58, 0x42, // .............DXB
|
||||
0x43, 0xa9, 0x98, 0xd1, 0xdb, 0x4a, 0xa2, 0x9c, 0xfe, 0x9c, 0xf1, 0xe4, 0xd0, 0x2c, 0xa5, 0xd6, // C....J.......,..
|
||||
0xb6, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, // .............4..
|
||||
0x00, 0x8c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, // .............T..
|
||||
0x00, 0x52, 0x44, 0x45, 0x46, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .RDEFP..........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xff, 0x00, 0x91, 0x00, // ................
|
||||
0x00, 0x1c, 0x00, 0x00, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, // .....Microsoft (
|
||||
0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, // R) HLSL Shader C
|
||||
0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, // ompiler 9.29.952
|
||||
0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, 0xab, 0xab, 0x49, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, // .3111....ISGNL..
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .........8......
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, // ................
|
||||
0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // .D..............
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, // .........SV_POSI
|
||||
0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x4f, 0x53, 0x47, // TION.COLOR...OSG
|
||||
0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // N,........... ..
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x00, 0xab, // .....SV_TARGET..
|
||||
0xab, 0x53, 0x48, 0x44, 0x52, 0x38, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, // .SHDR8...@......
|
||||
0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, // .b...........e..
|
||||
0x03, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, // .. ......6.... .
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, // .....F.......>..
|
||||
0x01, 0x53, 0x54, 0x41, 0x54, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .STATt..........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ..............
|
||||
};
|
||||
static const uint8_t fs_imgui_color_glsl[130] =
|
||||
{
|
||||
0x46, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, 0x47, // FSH....I#ifdef G
|
||||
0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x68, // L_ES.precision h
|
||||
0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, // ighp float;.#end
|
||||
0x69, 0x66, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x0a, 0x76, 0x61, 0x72, // if // GL_ES..var
|
||||
0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, // ying vec4 v_colo
|
||||
0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, // r0;.void main ()
|
||||
0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // .{. gl_FragColo
|
||||
0x72, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, // r = v_color0;.}.
|
||||
0x0a, 0x00, // ..
|
||||
};
|
13
examples/common/imgui/fs_imgui_color.sc
Normal file
13
examples/common/imgui/fs_imgui_color.sc
Normal file
|
@ -0,0 +1,13 @@
|
|||
$input v_color0
|
||||
|
||||
/*
|
||||
* Copyright 2011-2013 Branimir Karadzic. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <bgfx_shader.sh>
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_FragColor = v_color0;
|
||||
}
|
91
examples/common/imgui/fs_imgui_texture.bin.h
Normal file
91
examples/common/imgui/fs_imgui_texture.bin.h
Normal file
|
@ -0,0 +1,91 @@
|
|||
static const uint8_t fs_imgui_texture_dx9[241] =
|
||||
{
|
||||
0x46, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x03, 0xff, 0xff, // FSH.............
|
||||
0xfe, 0xff, 0x22, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, // ..".CTAB....S...
|
||||
0x00, 0x03, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, // ................
|
||||
0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, // L...0...........
|
||||
0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, // <.......u_texCol
|
||||
0x6f, 0x72, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, // or..............
|
||||
0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, // ....ps_3_0.Micro
|
||||
0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, // soft (R) HLSL Sh
|
||||
0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, // ader Compiler 9.
|
||||
0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0x1f, 0x00, 0x00, 0x02, // 29.952.3111.....
|
||||
0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, // ................
|
||||
0x01, 0x00, 0x03, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, // ................
|
||||
0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x90, 0x00, 0x08, 0xe4, 0xa0, // B...............
|
||||
0x05, 0x00, 0x00, 0x03, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0x90, // ................
|
||||
0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, 0x00, // ................
|
||||
0x00, // .
|
||||
};
|
||||
static const uint8_t fs_imgui_texture_dx11[738] =
|
||||
{
|
||||
0x46, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, // FSH.............
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x02, 0x44, 0x58, 0x42, // .............DXB
|
||||
0x43, 0x8f, 0x77, 0x55, 0xdc, 0xbb, 0x5d, 0x37, 0x2c, 0xed, 0xde, 0x24, 0x6d, 0xe4, 0xbc, 0xf1, // C.wU..]7,..$m...
|
||||
0x76, 0x01, 0x00, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, // v............4..
|
||||
0x00, 0xf0, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x48, 0x02, 0x00, // .....d.......H..
|
||||
0x00, 0x52, 0x44, 0x45, 0x46, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .RDEF...........
|
||||
0x00, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0xff, 0xff, 0x00, 0x91, 0x00, // ................
|
||||
0x00, 0x80, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, // .....n..........
|
||||
0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
||||
0x00, 0x0d, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x53, // .....u_texColorS
|
||||
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, // ampler.u_texColo
|
||||
0x72, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, // rTexture.Microso
|
||||
0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, // ft (R) HLSL Shad
|
||||
0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, // er Compiler 9.29
|
||||
0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, 0xab, 0xab, 0x49, 0x53, 0x47, // .952.3111....ISG
|
||||
0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, // Nl...........P..
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x62, 0x00, 0x00, // .............b..
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, // ................
|
||||
0x00, 0x03, 0x03, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, // .....SV_POSITION
|
||||
0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, // .COLOR.TEXCOORD.
|
||||
0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // .OSGN,..........
|
||||
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // . ..............
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x41, 0x52, 0x47, // .........SV_TARG
|
||||
0x45, 0x54, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xa8, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, // ET...SHDR....@..
|
||||
0x00, 0x2a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, // .*...Z....`.....
|
||||
0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, // .X....p......UU.
|
||||
0x00, 0x62, 0x10, 0x00, 0x03, 0xf2, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, // .b...........b..
|
||||
0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, // .2.......e.... .
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, // .....h.......E..
|
||||
0x09, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, // .........F......
|
||||
0x00, 0x46, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, // .F~.......`.....
|
||||
0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, // .8.... .........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // .....:.......6..
|
||||
0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, // .r ......F......
|
||||
0x00, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x74, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .>...STATt......
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, // ..
|
||||
};
|
||||
static const uint8_t fs_imgui_texture_glsl[303] =
|
||||
{
|
||||
0x46, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, 0x47, // FSH.....#ifdef G
|
||||
0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x68, // L_ES.precision h
|
||||
0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, // ighp float;.#end
|
||||
0x69, 0x66, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x0a, 0x75, 0x6e, 0x69, // if // GL_ES..uni
|
||||
0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x75, // form sampler2D u
|
||||
0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // _texColor;.varyi
|
||||
0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, // ng vec2 v_texcoo
|
||||
0x72, 0x64, 0x30, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, // rd0;.varying vec
|
||||
0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, // 4 v_color0;.void
|
||||
0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, // main ().{. vec
|
||||
0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_1;. tm
|
||||
0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x76, 0x5f, 0x63, // pvar_1.xyz = v_c
|
||||
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // olor0.xyz;. tmp
|
||||
0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // var_1.w = (v_col
|
||||
0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, // or0.w * texture2
|
||||
0x44, 0x20, 0x28, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, // D (u_texColor, v
|
||||
0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x29, 0x2e, 0x78, 0x29, 0x3b, 0x0a, // _texcoord0).x);.
|
||||
0x20, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, // gl_FragColor =
|
||||
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tmpvar_1;.}...
|
||||
};
|
16
examples/common/imgui/fs_imgui_texture.sc
Normal file
16
examples/common/imgui/fs_imgui_texture.sc
Normal file
|
@ -0,0 +1,16 @@
|
|||
$input v_texcoord0, v_color0
|
||||
|
||||
/*
|
||||
* Copyright 2011-2013 Branimir Karadzic. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <bgfx_shader.sh>
|
||||
|
||||
SAMPLER2D(u_texColor, 0);
|
||||
|
||||
void main()
|
||||
{
|
||||
float alpha = texture2D(u_texColor, v_texcoord0).x;
|
||||
gl_FragColor = vec4(v_color0.xyz, v_color0.w * alpha);
|
||||
}
|
1520
examples/common/imgui/imgui.cpp
Normal file
1520
examples/common/imgui/imgui.cpp
Normal file
File diff suppressed because it is too large
Load diff
79
examples/common/imgui/imgui.h
Normal file
79
examples/common/imgui/imgui.h
Normal file
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* Copyright 2011-2013 Branimir Karadzic. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
// This code is based on:
|
||||
//
|
||||
// Copyright (c) 2009-2010 Mikko Mononen memon@inside.org
|
||||
//
|
||||
// This software is provided 'as-is', without any express or implied
|
||||
// warranty. In no event will the authors be held liable for any damages
|
||||
// arising from the use of this software.
|
||||
// Permission is granted to anyone to use this software for any purpose,
|
||||
// including commercial applications, and to alter it and redistribute it
|
||||
// freely, subject to the following restrictions:
|
||||
// 1. The origin of this software must not be misrepresented; you must not
|
||||
// claim that you wrote the original software. If you use this software
|
||||
// in a product, an acknowledgment in the product documentation would be
|
||||
// appreciated but is not required.
|
||||
// 2. Altered source versions must be plainly marked as such, and must not be
|
||||
// misrepresented as being the original software.
|
||||
// 3. This notice may not be removed or altered from any source distribution.
|
||||
//
|
||||
// Source altered and distributed from https://github.com/AdrienHerubel/imgui
|
||||
|
||||
#ifndef __IMGUI_H__
|
||||
#define __IMGUI_H__
|
||||
|
||||
enum imguiMouseButton
|
||||
{
|
||||
IMGUI_MBUT_LEFT = 0x01,
|
||||
IMGUI_MBUT_RIGHT = 0x02,
|
||||
};
|
||||
|
||||
enum imguiTextAlign
|
||||
{
|
||||
IMGUI_ALIGN_LEFT,
|
||||
IMGUI_ALIGN_CENTER,
|
||||
IMGUI_ALIGN_RIGHT,
|
||||
};
|
||||
|
||||
inline uint32_t imguiRGBA(uint8_t _r, uint8_t _g, uint8_t _b, uint8_t _a = 255)
|
||||
{
|
||||
return 0
|
||||
| (uint32_t(_r) << 0)
|
||||
| (uint32_t(_g) << 8)
|
||||
| (uint32_t(_b) << 16)
|
||||
| (uint32_t(_a) << 24)
|
||||
;
|
||||
}
|
||||
|
||||
bool imguiCreate(void* _data, uint32_t _size);
|
||||
void imguiDestroy();
|
||||
|
||||
void imguiBeginFrame(int32_t _mx, int32_t _my, uint8_t _button, int32_t _scroll, uint16_t _width, uint16_t _height, uint8_t _view = 31);
|
||||
void imguiEndFrame();
|
||||
|
||||
bool imguiBeginScrollArea(const char* _name, int _x, int _y, int _width, int _height, int* _scroll);
|
||||
void imguiEndScrollArea();
|
||||
|
||||
void imguiIndent();
|
||||
void imguiUnindent();
|
||||
void imguiSeparator();
|
||||
void imguiSeparatorLine();
|
||||
|
||||
bool imguiButton(const char* _text, bool _enabled = true);
|
||||
bool imguiItem(const char* _text, bool _enabled = true);
|
||||
bool imguiCheck(const char* _text, bool _checked, bool _enabled = true);
|
||||
bool imguiCollapse(const char* _text, const char* _subtext, bool _checked, bool _enabled = true);
|
||||
void imguiLabel(const char* _format, ...);
|
||||
void imguiValue(const char* _text);
|
||||
bool imguiSlider(const char* _text, float* val, float vmin, float vmax, float vinc, bool _enabled = true);
|
||||
|
||||
void imguiDrawText(int _x, int _y, imguiTextAlign _align, const char* _text, uint32_t _argb);
|
||||
void imguiDrawLine(float _x0, float _y0, float _x1, float _y1, float _r, uint32_t _argb);
|
||||
void imguiDrawRoundedRect(float _x, float _y, float _w, float _h, float _r, uint32_t _argb);
|
||||
void imguiDrawRect(float _x, float _y, float _w, float _h, uint32_t _argb);
|
||||
|
||||
#endif // __IMGUI_H__
|
9
examples/common/imgui/makefile
Normal file
9
examples/common/imgui/makefile
Normal file
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# Copyright 2011-2013 Branimir Karadzic. All rights reserved.
|
||||
# License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
#
|
||||
|
||||
include ../../../premake/shader-embeded.mk
|
||||
|
||||
rebuild:
|
||||
@make -s --no-print-directory clean all
|
6
examples/common/imgui/varying.def.sc
Normal file
6
examples/common/imgui/varying.def.sc
Normal file
|
@ -0,0 +1,6 @@
|
|||
vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0);
|
||||
vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0);
|
||||
|
||||
vec2 a_position : POSITION;
|
||||
vec4 a_color0 : COLOR0;
|
||||
vec2 a_texcoord0 : TEXCOORD0;
|
124
examples/common/imgui/vs_imgui_color.bin.h
Normal file
124
examples/common/imgui/vs_imgui_color.bin.h
Normal file
|
@ -0,0 +1,124 @@
|
|||
static const uint8_t vs_imgui_color_dx9[290] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH....I...u_vie
|
||||
0x77, 0x50, 0x72, 0x6f, 0x6a, 0x09, 0x01, 0x00, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x03, 0xfe, // wProj...........
|
||||
0xff, 0xfe, 0xff, 0x22, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // ...".CTAB....S..
|
||||
0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, // ................
|
||||
0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .L...0..........
|
||||
0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // .<.......u_viewP
|
||||
0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, // roj.............
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // .....vs_3_0.Micr
|
||||
0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S
|
||||
0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, // hader Compiler 9
|
||||
0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0x1f, 0x00, 0x00, // .29.952.3111....
|
||||
0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................
|
||||
0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, // ................
|
||||
0xe0, 0x1f, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, // ................
|
||||
0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, // ...........U....
|
||||
0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, // ................
|
||||
0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, // ................
|
||||
0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x90, 0xff, 0xff, 0x00, // ................
|
||||
0x00, 0x00, // ..
|
||||
};
|
||||
static const uint8_t vs_imgui_color_dx11[1187] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, // VSH....I........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb0, 0x09, 0x0a, 0x75, 0x5f, 0x76, 0x69, // ............u_vi
|
||||
0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x09, 0x00, 0x60, 0x00, 0x04, 0x00, 0x74, 0x04, 0x44, 0x58, // ewProj..`...t.DX
|
||||
0x42, 0x43, 0xe3, 0x22, 0x0f, 0xd1, 0xff, 0x88, 0xa2, 0x22, 0x16, 0xe2, 0x07, 0x99, 0x95, 0xfb, // BC."....."......
|
||||
0x1a, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x74, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, // .[....t.......4.
|
||||
0x00, 0x00, 0x78, 0x02, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, 0x1c, 0x03, 0x00, 0x00, 0xf8, 0x03, // ..x.............
|
||||
0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x3c, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, // ..RDEF<.......H.
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfe, 0xff, 0x00, 0x91, // ................
|
||||
0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......<.........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x00, 0xab, // ......$Globals..
|
||||
0xab, 0xab, 0x3c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xb0, 0x09, // ..<.......`.....
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, // ..........P.....
|
||||
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ..l.............
|
||||
0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x20, 0x00, // ..........x... .
|
||||
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // ..@.............
|
||||
0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, // ......`...@.....
|
||||
0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0xa0, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........@.....
|
||||
0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x08, // ................
|
||||
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // ..@.............
|
||||
0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...@.....
|
||||
0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x60, 0x09, // ..............`.
|
||||
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // ..@.............
|
||||
0x00, 0x00, 0xed, 0x01, 0x00, 0x00, 0xa0, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // ..........u_view
|
||||
0x52, 0x65, 0x63, 0x74, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, // Rect............
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x54, 0x65, 0x78, 0x65, // ......u_viewTexe
|
||||
0x6c, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, // l.u_view........
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // ..........u_view
|
||||
0x50, 0x72, 0x6f, 0x6a, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0xab, 0x03, 0x00, // Proj.u_model....
|
||||
0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ...... .......u_
|
||||
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // modelView.u_mode
|
||||
0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // lViewProj.u_mode
|
||||
0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x58, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // lViewProjX.u_vie
|
||||
0x77, 0x50, 0x72, 0x6f, 0x6a, 0x58, 0x00, 0x75, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x52, 0x65, // wProjX.u_alphaRe
|
||||
0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // f...............
|
||||
0x00, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, // ..Microsoft (R)
|
||||
0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, // HLSL Shader Comp
|
||||
0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, // iler 9.29.952.31
|
||||
0x31, 0x31, 0x00, 0xab, 0xab, 0xab, 0x49, 0x53, 0x47, 0x4e, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, // 11....ISGNH.....
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......8.........
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x3e, 0x00, // ..............>.
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||
0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, // ......COLOR.POSI
|
||||
0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, // TION..OSGNL.....
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ......8.........
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x00, // ..............D.
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||
0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, // ......SV_POSITIO
|
||||
0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0xd4, 0x00, // N.COLOR...SHDR..
|
||||
0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x35, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, // ..@...5...Y...F.
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, // ........._.....
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, // ......_...2.....
|
||||
0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..g.... ........
|
||||
0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, // ..e.... ......h.
|
||||
0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......8.........
|
||||
0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..V.......F. ...
|
||||
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2.........
|
||||
0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x10, // ..F. ...........
|
||||
0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......F.........
|
||||
0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ... ......F.....
|
||||
0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x36, 0x00, // ..F. .........6.
|
||||
0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, // ... ......F.....
|
||||
0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, // ..>...STATt.....
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, // ...
|
||||
};
|
||||
static const uint8_t vs_imgui_color_glsl[321] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x01, 0xa4, 0x8b, 0xef, 0x49, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, 0x47, // VSH....I#ifdef G
|
||||
0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x68, // L_ES.precision h
|
||||
0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, // ighp float;.#end
|
||||
0x69, 0x66, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x0a, 0x75, 0x6e, 0x69, // if // GL_ES..uni
|
||||
0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // form mat4 u_view
|
||||
0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, // Proj;.varying ve
|
||||
0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, // c4 v_color0;.att
|
||||
0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, // ribute vec2 a_po
|
||||
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, // sition;.attribut
|
||||
0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, // e vec4 a_color0;
|
||||
0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, // .void main ().{.
|
||||
0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, // vec4 tmpvar_1;
|
||||
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, // . tmpvar_1.zw =
|
||||
0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, // vec2(0.0, 1.0);
|
||||
0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, // . tmpvar_1.xy =
|
||||
0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, // a_position;. g
|
||||
0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // l_Position = (u_
|
||||
0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // viewProj * tmpva
|
||||
0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, // r_1);. v_color0
|
||||
0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, // = a_color0;.}..
|
||||
0x00, // .
|
||||
};
|
15
examples/common/imgui/vs_imgui_color.sc
Normal file
15
examples/common/imgui/vs_imgui_color.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input a_position, a_color0
|
||||
$output v_color0
|
||||
|
||||
/*
|
||||
* Copyright 2011-2013 Branimir Karadzic. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <bgfx_shader.sh>
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0) );
|
||||
v_color0 = a_color0;
|
||||
}
|
137
examples/common/imgui/vs_imgui_texture.bin.h
Normal file
137
examples/common/imgui/vs_imgui_texture.bin.h
Normal file
|
@ -0,0 +1,137 @@
|
|||
static const uint8_t vs_imgui_texture_dx9[326] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie
|
||||
0x77, 0x50, 0x72, 0x6f, 0x6a, 0x09, 0x01, 0x00, 0x00, 0x04, 0x00, 0x28, 0x01, 0x00, 0x03, 0xfe, // wProj......(....
|
||||
0xff, 0xfe, 0xff, 0x22, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, // ...".CTAB....S..
|
||||
0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, // ................
|
||||
0x00, 0x4c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, // .L...0..........
|
||||
0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // .<.......u_viewP
|
||||
0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, // roj.............
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, // .....vs_3_0.Micr
|
||||
0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, // osoft (R) HLSL S
|
||||
0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, // hader Compiler 9
|
||||
0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0x1f, 0x00, 0x00, // .29.952.3111....
|
||||
0x02, 0x0a, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................
|
||||
0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x0f, // ................
|
||||
0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, // ................
|
||||
0x02, 0x0a, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, // ................
|
||||
0x80, 0x02, 0x00, 0x03, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, // ................
|
||||
0xa0, 0x01, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, // ...U............
|
||||
0xa0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, // ................
|
||||
0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x0f, // ................
|
||||
0xe0, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0xe0, 0x02, 0x00, 0xe4, // ................
|
||||
0x90, 0xff, 0xff, 0x00, 0x00, 0x00, // ......
|
||||
};
|
||||
static const uint8_t vs_imgui_texture_dx11[1295] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, // VSH.............
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb0, 0x09, 0x0a, 0x75, 0x5f, 0x76, 0x69, // ............u_vi
|
||||
0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x09, 0x00, 0x60, 0x00, 0x04, 0x00, 0xe0, 0x04, 0x44, 0x58, // ewProj..`.....DX
|
||||
0x42, 0x43, 0xba, 0x64, 0x76, 0xcf, 0xca, 0x9d, 0xf4, 0xd5, 0x85, 0xc5, 0x48, 0xa7, 0x92, 0xde, // BC.dv.......H...
|
||||
0x73, 0x7f, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, // s.............4.
|
||||
0x00, 0x00, 0x78, 0x02, 0x00, 0x00, 0xe8, 0x02, 0x00, 0x00, 0x5c, 0x03, 0x00, 0x00, 0x64, 0x04, // ..x...........d.
|
||||
0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x3c, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48, 0x00, // ..RDEF<.......H.
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfe, 0xff, 0x00, 0x91, // ................
|
||||
0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......<.........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x00, 0xab, // ......$Globals..
|
||||
0xab, 0xab, 0x3c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xb0, 0x09, // ..<.......`.....
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, // ..........P.....
|
||||
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ..l.............
|
||||
0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x20, 0x00, // ..........x... .
|
||||
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // ..@.............
|
||||
0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, // ......`...@.....
|
||||
0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x01, 0x00, 0x00, 0xa0, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........@.....
|
||||
0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x08, // ................
|
||||
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // ..@.............
|
||||
0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // ...... ...@.....
|
||||
0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x60, 0x09, // ..............`.
|
||||
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, // ..@.............
|
||||
0x00, 0x00, 0xed, 0x01, 0x00, 0x00, 0xa0, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // ..........u_view
|
||||
0x52, 0x65, 0x63, 0x74, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, // Rect............
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x54, 0x65, 0x78, 0x65, // ......u_viewTexe
|
||||
0x6c, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, // l.u_view........
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // ..........u_view
|
||||
0x50, 0x72, 0x6f, 0x6a, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0xab, 0x03, 0x00, // Proj.u_model....
|
||||
0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ...... .......u_
|
||||
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // modelView.u_mode
|
||||
0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // lViewProj.u_mode
|
||||
0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x58, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, // lViewProjX.u_vie
|
||||
0x77, 0x50, 0x72, 0x6f, 0x6a, 0x58, 0x00, 0x75, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x52, 0x65, // wProjX.u_alphaRe
|
||||
0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // f...............
|
||||
0x00, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, // ..Microsoft (R)
|
||||
0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, // HLSL Shader Comp
|
||||
0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, // iler 9.29.952.31
|
||||
0x31, 0x31, 0x00, 0xab, 0xab, 0xab, 0x49, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, // 11....ISGNh.....
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......P.........
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x56, 0x00, // ..............V.
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||
0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......_.........
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x43, 0x4f, // ..............CO
|
||||
0x4c, 0x4f, 0x52, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, // LOR.POSITION.TEX
|
||||
0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x4f, 0x53, 0x47, 0x4e, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, // COORD.OSGNl.....
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ......P.........
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // ................
|
||||
0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......b.........
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x53, 0x56, // ..............SV
|
||||
0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, // _POSITION.COLOR.
|
||||
0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0x53, 0x48, 0x44, 0x52, 0x00, 0x01, // TEXCOORD..SHDR..
|
||||
0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, // ..@...@...Y...F.
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0xf2, 0x10, // ........._.....
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, // ......_...2.....
|
||||
0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, // .._...2.......g.
|
||||
0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, // ... ..........e.
|
||||
0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, // ... ......e...2
|
||||
0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, // ......h.......8.
|
||||
0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, 0x00, // ..........V.....
|
||||
0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x00, // ..F. .........2.
|
||||
0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..........F. ...
|
||||
0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..............F.
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, // ........... ....
|
||||
0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..F.......F. ...
|
||||
0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xf2, 0x20, 0x10, 0x00, 0x01, 0x00, // ......6.... ....
|
||||
0x00, 0x00, 0x46, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, // ..F.......6...2
|
||||
0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x00, // ......F.......>.
|
||||
0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x74, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, // ..STATt.........
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ...............
|
||||
};
|
||||
static const uint8_t vs_imgui_texture_glsl[404] =
|
||||
{
|
||||
0x56, 0x53, 0x48, 0x01, 0x01, 0x83, 0xf2, 0xe1, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, 0x47, // VSH.....#ifdef G
|
||||
0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x68, // L_ES.precision h
|
||||
0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, // ighp float;.#end
|
||||
0x69, 0x66, 0x20, 0x2f, 0x2f, 0x20, 0x47, 0x4c, 0x5f, 0x45, 0x53, 0x0a, 0x0a, 0x75, 0x6e, 0x69, // if // GL_ES..uni
|
||||
0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // form mat4 u_view
|
||||
0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, // Proj;.varying ve
|
||||
0x63, 0x32, 0x20, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, // c2 v_texcoord0;.
|
||||
0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x5f, 0x63, // varying vec4 v_c
|
||||
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // olor0;.attribute
|
||||
0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // vec2 a_texcoord
|
||||
0x30, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, // 0;.attribute vec
|
||||
0x32, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x61, 0x74, // 2 a_position;.at
|
||||
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x5f, 0x63, // tribute vec4 a_c
|
||||
0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // olor0;.void main
|
||||
0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // ().{. vec4 tmp
|
||||
0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_1;. tmpvar_
|
||||
0x31, 0x2e, 0x7a, 0x77, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x2e, 0x30, 0x2c, // 1.zw = vec2(0.0,
|
||||
0x20, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 1.0);. tmpvar_
|
||||
0x31, 0x2e, 0x78, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // 1.xy = a_positio
|
||||
0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // n;. gl_Position
|
||||
0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, // = (u_viewProj *
|
||||
0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, // tmpvar_1);. v_
|
||||
0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x74, 0x65, // texcoord0 = a_te
|
||||
0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x63, 0x6f, 0x6c, // xcoord0;. v_col
|
||||
0x6f, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x3b, 0x0a, // or0 = a_color0;.
|
||||
0x7d, 0x0a, 0x0a, 0x00, // }...
|
||||
};
|
16
examples/common/imgui/vs_imgui_texture.sc
Normal file
16
examples/common/imgui/vs_imgui_texture.sc
Normal file
|
@ -0,0 +1,16 @@
|
|||
$input a_position, a_texcoord0, a_color0
|
||||
$output v_texcoord0, v_color0
|
||||
|
||||
/*
|
||||
* Copyright 2011-2013 Branimir Karadzic. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <bgfx_shader.sh>
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = mul(u_viewProj, vec4(a_position.xy, 0.0, 1.0) );
|
||||
v_texcoord0 = a_texcoord0;
|
||||
v_color0 = a_color0;
|
||||
}
|
|
@ -6,7 +6,24 @@
|
|||
#ifndef __PROCESS_EVENTS_H__
|
||||
#define __PROCESS_EVENTS_H__
|
||||
|
||||
inline bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset)
|
||||
struct MouseState
|
||||
{
|
||||
MouseState()
|
||||
: m_mx(0)
|
||||
, m_my(0)
|
||||
{
|
||||
for (uint32_t ii = 0; ii < entry::MouseButton::Count; ++ii)
|
||||
{
|
||||
m_buttons[ii] = entry::MouseButton::None;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t m_mx;
|
||||
uint32_t m_my;
|
||||
uint8_t m_buttons[entry::MouseButton::Count];
|
||||
};
|
||||
|
||||
inline bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug, uint32_t& _reset, MouseState* _mouse = NULL)
|
||||
{
|
||||
using namespace entry;
|
||||
|
||||
|
@ -26,11 +43,18 @@ inline bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug,
|
|||
return true;
|
||||
|
||||
case Event::Mouse:
|
||||
if (NULL != _mouse)
|
||||
{
|
||||
// const MouseEvent* mouse = static_cast<const MouseEvent*>(ev);
|
||||
// if (mouse->m_move)
|
||||
// {
|
||||
// }
|
||||
const MouseEvent* mouse = static_cast<const MouseEvent*>(ev);
|
||||
if (mouse->m_move)
|
||||
{
|
||||
_mouse->m_mx = mouse->m_mx;
|
||||
_mouse->m_my = mouse->m_my;
|
||||
}
|
||||
else
|
||||
{
|
||||
_mouse->m_buttons[mouse->m_button] = mouse->m_down;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -50,6 +74,11 @@ inline bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug,
|
|||
bgfx::setDebug(_debug);
|
||||
return false;
|
||||
}
|
||||
else if (key->m_key == Key::F7)
|
||||
{
|
||||
_reset ^= BGFX_RESET_VSYNC;
|
||||
reset = true;
|
||||
}
|
||||
else if (key->m_key == Key::F8)
|
||||
{
|
||||
_reset ^= BGFX_RESET_MSAA_X16;
|
||||
|
|
BIN
examples/runtime/font/droidsans.ttf
Normal file
BIN
examples/runtime/font/droidsans.ttf
Normal file
Binary file not shown.
|
@ -223,7 +223,8 @@ namespace bgfx
|
|||
{
|
||||
enum Enum
|
||||
{
|
||||
MinimumRequiredSpecs = 1,
|
||||
DebugCheck,
|
||||
MinimumRequiredSpecs,
|
||||
InvalidShader,
|
||||
UnableToInitialize,
|
||||
UnableToCreateRenderTarget,
|
||||
|
@ -350,11 +351,13 @@ namespace bgfx
|
|||
/// NOTE:
|
||||
/// 'fatal' callback can be called from any thread. Other callbacks
|
||||
/// are called from the render thread.
|
||||
///
|
||||
struct CallbackI
|
||||
{
|
||||
virtual ~CallbackI() = 0;
|
||||
|
||||
/// Called on unrecoverable error. It's not safe to continue, inform
|
||||
/// If fatal code code is not Fatal::DebugCheck this callback is
|
||||
/// called on unrecoverable error. It's not safe to continue, inform
|
||||
/// user and terminate application from this call.
|
||||
virtual void fatal(Fatal::Enum _code, const char* _str) = 0;
|
||||
|
||||
|
@ -454,6 +457,7 @@ namespace bgfx
|
|||
///
|
||||
/// NOTE:
|
||||
/// Must be called between begin/end.
|
||||
///
|
||||
void add(Attrib::Enum _attrib, uint8_t _num, AttribType::Enum _type, bool _normalized = false, bool _asInt = false);
|
||||
|
||||
/// Decode attribute.
|
||||
|
@ -579,21 +583,38 @@ namespace bgfx
|
|||
/// Update dynamic vertex buffer.
|
||||
void updateDynamicVertexBuffer(DynamicVertexBufferHandle _handle, const Memory* _mem);
|
||||
|
||||
/// Destory dynamic vertex buffer.
|
||||
/// Destroy dynamic vertex buffer.
|
||||
void destroyDynamicVertexBuffer(DynamicVertexBufferHandle _handle);
|
||||
|
||||
/// Returns true if internal transient index buffer has enough space.
|
||||
bool checkAvailTransientIndexBuffer(uint16_t _num);
|
||||
///
|
||||
/// @param _num Number of indices.
|
||||
///
|
||||
bool checkAvailTransientIndexBuffer(uint32_t _num);
|
||||
|
||||
/// Returns true if internal transient vertex buffer has enough space.
|
||||
///
|
||||
/// @param _num Number of vertices.
|
||||
/// @param _decl Vertex declaration.
|
||||
///
|
||||
bool checkAvailTransientVertexBuffer(uint32_t _num, const VertexDecl& _decl);
|
||||
|
||||
/// Returns true if both internal transient index and vertex buffer have
|
||||
/// enough space.
|
||||
///
|
||||
/// @param _numVertices Number of vertices.
|
||||
/// @param _decl Vertex declaration.
|
||||
/// @param _numIndices Number of indices.
|
||||
///
|
||||
bool checkAvailTransientBuffers(uint32_t _numVertices, const VertexDecl& _decl, uint32_t _numIndices);
|
||||
|
||||
/// Allocate transient index buffer.
|
||||
///
|
||||
/// @param[out] _tib is valid for the duration of frame, and it can be
|
||||
/// reused for multiple draw calls.
|
||||
/// @param _num number of indices to allocate.
|
||||
void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint16_t _num);
|
||||
|
||||
/// Returns true if internal transient vertex buffer has enough space.
|
||||
bool checkAvailTransientVertexBuffer(uint16_t _num, const VertexDecl& _decl);
|
||||
///
|
||||
void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint32_t _num);
|
||||
|
||||
/// Allocate transient vertex buffer.
|
||||
///
|
||||
|
@ -601,10 +622,11 @@ namespace bgfx
|
|||
/// reused for multiple draw calls.
|
||||
/// @param _num number of vertices to allocate.
|
||||
/// @param _decl vertex declaration.
|
||||
void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint16_t _num, const VertexDecl& _decl);
|
||||
///
|
||||
void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint32_t _num, const VertexDecl& _decl);
|
||||
|
||||
/// Allocate instance data buffer.
|
||||
const InstanceDataBuffer* allocInstanceDataBuffer(uint16_t _num, uint16_t _stride);
|
||||
const InstanceDataBuffer* allocInstanceDataBuffer(uint32_t _num, uint16_t _stride);
|
||||
|
||||
/// Create vertex shader from memory buffer.
|
||||
VertexShaderHandle createVertexShader(const Memory* _mem);
|
||||
|
@ -626,6 +648,7 @@ namespace bgfx
|
|||
/// @param _fsh fragment shader.
|
||||
/// @returns Program handle if vertex shader output and fragment shader
|
||||
/// input are matching, otherwise returns invalid program handle.
|
||||
///
|
||||
ProgramHandle createProgram(VertexShaderHandle _vsh, FragmentShaderHandle _fsh);
|
||||
|
||||
/// Destroy program.
|
||||
|
@ -635,6 +658,7 @@ namespace bgfx
|
|||
void calcTextureSize(TextureInfo& _info, uint16_t _width, uint16_t _height, uint16_t _depth, uint8_t _numMips, TextureFormat::Enum _format);
|
||||
|
||||
/// Create texture from memory buffer.
|
||||
///
|
||||
/// @param _mem DDS texture data.
|
||||
/// @param _flags Default texture sampling mode is linear, and wrap mode
|
||||
/// is repeat.
|
||||
|
@ -649,6 +673,7 @@ namespace bgfx
|
|||
///
|
||||
/// @param _info Returns parsed DDS texture information.
|
||||
/// @returns Texture handle.
|
||||
///
|
||||
TextureHandle createTexture(const Memory* _mem, uint32_t _flags = BGFX_TEXTURE_NONE, TextureInfo* _info = NULL);
|
||||
|
||||
/// Create 2D texture.
|
||||
|
@ -699,6 +724,7 @@ namespace bgfx
|
|||
/// @param _rgba color clear value.
|
||||
/// @param _depth depth clear value.
|
||||
/// @param _stencil stencil clear value.
|
||||
///
|
||||
void setViewClear(uint8_t _id, uint8_t _flags, uint32_t _rgba = 0x000000ff, float _depth = 1.0f, uint8_t _stencil = 0);
|
||||
|
||||
/// Set view clear flags for multiple views.
|
||||
|
@ -726,6 +752,7 @@ namespace bgfx
|
|||
void setViewTransformMask(uint32_t _viewMask, const void* _view, const void* _proj, uint8_t _other = 0xff);
|
||||
|
||||
/// Set render states for draw primitive.
|
||||
///
|
||||
/// @param _state State flags. Default state for primitive type is
|
||||
/// triangles. See: BGFX_STATE_DEFAULT.
|
||||
///
|
||||
|
@ -745,6 +772,7 @@ namespace bgfx
|
|||
/// NOTE:
|
||||
/// Use BGFX_STATE_ALPHA_REF, BGFX_STATE_POINT_SIZE and
|
||||
/// BGFX_STATE_BLEND_FUNC macros to setup more complex states.
|
||||
///
|
||||
void setState(uint64_t _state, uint32_t _rgba = UINT32_MAX);
|
||||
|
||||
/// Set stencil test state.
|
||||
|
@ -752,6 +780,7 @@ namespace bgfx
|
|||
/// @param _fstencil Front stencil state.
|
||||
/// @param _bstencil Back stencil state. If back is set to BGFX_STENCIL_NONE
|
||||
/// _fstencil is applied to both front and back facing primitives.
|
||||
///
|
||||
void setStencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE);
|
||||
|
||||
/// Set model matrix for draw primitive. If it is not called model will
|
||||
|
@ -761,12 +790,14 @@ namespace bgfx
|
|||
/// @param _num number of matrices in array.
|
||||
/// @returns index into matrix cache in case the same model matrix has
|
||||
/// to be used for other draw primitive call.
|
||||
///
|
||||
uint32_t setTransform(const void* _mtx, uint16_t _num = 1);
|
||||
|
||||
/// Set model matrix from matrix cache for draw primitive.
|
||||
///
|
||||
/// @param _cache index in matrix cache.
|
||||
/// @param _num number of matrices from cache.
|
||||
///
|
||||
void setTransform(uint32_t _cache, uint16_t _num = 1);
|
||||
|
||||
/// Set shader uniform parameter for draw primitive.
|
||||
|
@ -806,12 +837,14 @@ namespace bgfx
|
|||
///
|
||||
/// @param _id View id.
|
||||
/// @param _depth depth for sorting.
|
||||
///
|
||||
void submit(uint8_t _id, int32_t _depth = 0);
|
||||
|
||||
/// Submit primitive for rendering into multiple views.
|
||||
///
|
||||
/// @param _viewMask mask to which views to submit draw primitive calls.
|
||||
/// @param _depth depth for sorting.
|
||||
///
|
||||
void submitMask(uint32_t _viewMask, int32_t _depth = 0);
|
||||
|
||||
/// Request screen shot.
|
||||
|
|
1
makefile
1
makefile
|
@ -102,6 +102,7 @@ rebuild-shaders:
|
|||
make -R -C examples rebuild
|
||||
|
||||
docs:
|
||||
doxygen premake/bgfx.doxygen
|
||||
markdown README.md > .build/docs/readme.html
|
||||
|
||||
clean:
|
||||
|
|
|
@ -661,7 +661,7 @@ WARN_LOGFILE =
|
|||
# directories like "/usr/src/myproject". Separate the files or directories
|
||||
# with spaces.
|
||||
|
||||
INPUT = include/bgfx.h
|
||||
INPUT = include/bgfx.h README.md
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||
|
|
|
@ -30,7 +30,7 @@ project "bgfx"
|
|||
BGFX_DIR .. "src/**.mm",
|
||||
}
|
||||
|
||||
configuration { "vs* or linux" }
|
||||
configuration { "vs* or linux or mingw or osx" }
|
||||
includedirs {
|
||||
--nacl has GLES2 headers modified...
|
||||
BGFX_DIR .. "3rdparty/glext",
|
||||
|
|
|
@ -15,3 +15,5 @@ project "geometryc"
|
|||
BGFX_DIR .. "tools/geometryc/**.cpp",
|
||||
BGFX_DIR .. "tools/geometryc/**.h",
|
||||
}
|
||||
|
||||
strip()
|
||||
|
|
|
@ -46,6 +46,7 @@ function exampleProject(_name, _uuid)
|
|||
includedirs {
|
||||
BX_DIR .. "include",
|
||||
BGFX_DIR .. "include",
|
||||
BGFX_DIR .. "3rdparty",
|
||||
}
|
||||
|
||||
files {
|
||||
|
@ -80,6 +81,7 @@ function exampleProject(_name, _uuid)
|
|||
|
||||
configuration { "linux" }
|
||||
links {
|
||||
"X11",
|
||||
"GL",
|
||||
"pthread",
|
||||
}
|
||||
|
|
|
@ -91,3 +91,5 @@ project "shaderc"
|
|||
GLSL_OPTIMIZER .. "src/glsl/main.cpp",
|
||||
GLSL_OPTIMIZER .. "src/glsl/builtin_stubs.cpp",
|
||||
}
|
||||
|
||||
strip()
|
||||
|
|
47
src/bgfx.cpp
47
src/bgfx.cpp
|
@ -63,9 +63,16 @@ namespace bgfx
|
|||
|
||||
virtual void fatal(Fatal::Enum _code, const char* _str) BX_OVERRIDE
|
||||
{
|
||||
BX_TRACE("0x%08x: %s", _code, _str);
|
||||
BX_UNUSED(_code, _str);
|
||||
abort();
|
||||
if (Fatal::DebugCheck == _code)
|
||||
{
|
||||
bx::debugBreak();
|
||||
}
|
||||
else
|
||||
{
|
||||
BX_TRACE("0x%08x: %s", _code, _str);
|
||||
BX_UNUSED(_code, _str);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
virtual uint32_t cacheReadSize(uint64_t /*_id*/) BX_OVERRIDE
|
||||
|
@ -130,7 +137,7 @@ namespace bgfx
|
|||
|
||||
va_list argList;
|
||||
va_start(argList, _format);
|
||||
vsnprintf(temp, sizeof(temp), _format, argList);
|
||||
bx::vsnprintf(temp, sizeof(temp), _format, argList);
|
||||
va_end(argList);
|
||||
|
||||
temp[sizeof(temp)-1] = '\0';
|
||||
|
@ -917,14 +924,28 @@ namespace bgfx
|
|||
s_ctx.destroyDynamicVertexBuffer(_handle);
|
||||
}
|
||||
|
||||
bool checkAvailTransientIndexBuffer(uint16_t _num)
|
||||
bool checkAvailTransientIndexBuffer(uint32_t _num)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(0 < _num, "Requesting 0 indices.");
|
||||
return s_ctx.m_submit->checkAvailTransientIndexBuffer(_num);
|
||||
}
|
||||
|
||||
void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint16_t _num)
|
||||
bool checkAvailTransientVertexBuffer(uint32_t _num, const VertexDecl& _decl)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(0 < _num, "Requesting 0 vertices.");
|
||||
return s_ctx.m_submit->checkAvailTransientVertexBuffer(_num, _decl.m_stride);
|
||||
}
|
||||
|
||||
bool checkAvailTransientBuffers(uint32_t _numVertices, const VertexDecl& _decl, uint32_t _numIndices)
|
||||
{
|
||||
return checkAvailTransientVertexBuffer(_numVertices, _decl)
|
||||
&& checkAvailTransientIndexBuffer(_numIndices)
|
||||
;
|
||||
}
|
||||
|
||||
void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint32_t _num)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(NULL != _tib, "_tib can't be NULL");
|
||||
|
@ -932,22 +953,16 @@ namespace bgfx
|
|||
return s_ctx.allocTransientIndexBuffer(_tib, _num);
|
||||
}
|
||||
|
||||
bool checkAvailTransientVertexBuffer(uint16_t _num, const VertexDecl& _decl)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(0 < _num, "Requesting 0 vertices.");
|
||||
return s_ctx.m_submit->checkAvailTransientVertexBuffer(_num, _decl.m_stride);
|
||||
}
|
||||
|
||||
void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint16_t _num, const VertexDecl& _decl)
|
||||
void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint32_t _num, const VertexDecl& _decl)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(NULL != _tvb, "_tvb can't be NULL");
|
||||
BX_CHECK(0 < _num, "Requesting 0 vertices.");
|
||||
BX_CHECK(UINT16_MAX >= _num, "Requesting %d vertices (max: %d).", _num, UINT16_MAX);
|
||||
return s_ctx.allocTransientVertexBuffer(_tvb, _num, _decl);
|
||||
}
|
||||
|
||||
const InstanceDataBuffer* allocInstanceDataBuffer(uint16_t _num, uint16_t _stride)
|
||||
const InstanceDataBuffer* allocInstanceDataBuffer(uint32_t _num, uint16_t _stride)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(0 < _num, "Requesting 0 instanced data vertices.");
|
||||
|
@ -1264,14 +1279,12 @@ namespace bgfx
|
|||
void setViewClear(uint8_t _id, uint8_t _flags, uint32_t _rgba, float _depth, uint8_t _stencil)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(_flags != BGFX_CLEAR_NONE, "At least one clear bit flag must be used.");
|
||||
s_ctx.setViewClear(_id, _flags, _rgba, _depth, _stencil);
|
||||
}
|
||||
|
||||
void setViewClearMask(uint32_t _viewMask, uint8_t _flags, uint32_t _rgba, float _depth, uint8_t _stencil)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
BX_CHECK(_flags != BGFX_CLEAR_NONE, "At least one clear bit flag must be used.");
|
||||
s_ctx.setViewClearMask(_viewMask, _flags, _rgba, _depth, _stencil);
|
||||
}
|
||||
|
||||
|
|
49
src/bgfx_p.h
49
src/bgfx_p.h
|
@ -7,6 +7,8 @@
|
|||
#define __BGFX_P_H__
|
||||
|
||||
#include "bgfx.h"
|
||||
#include "config.h"
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdarg.h> // va_list
|
||||
#include <stdio.h>
|
||||
|
@ -14,17 +16,16 @@
|
|||
#include <string.h>
|
||||
#include <alloca.h>
|
||||
|
||||
extern void dbgPrintf(const char* _format, ...);
|
||||
extern void dbgPrintfData(const void* _data, uint32_t _size, const char* _format, ...);
|
||||
|
||||
#ifndef BGFX_CONFIG_DEBUG
|
||||
# define BGFX_CONFIG_DEBUG 0
|
||||
#endif // BGFX_CONFIG_DEBUG
|
||||
namespace bgfx
|
||||
{
|
||||
void fatal(Fatal::Enum _code, const char* _format, ...);
|
||||
void dbgPrintf(const char* _format, ...);
|
||||
}
|
||||
|
||||
#if BGFX_CONFIG_DEBUG
|
||||
# define BX_TRACE(_format, ...) \
|
||||
do { \
|
||||
dbgPrintf(BX_FILE_LINE_LITERAL "BGFX " _format "\n", ##__VA_ARGS__); \
|
||||
bgfx::dbgPrintf(BX_FILE_LINE_LITERAL "BGFX " _format "\n", ##__VA_ARGS__); \
|
||||
} while(0)
|
||||
|
||||
# define BX_WARN(_condition, _format, ...) \
|
||||
|
@ -40,7 +41,7 @@ extern void dbgPrintfData(const void* _data, uint32_t _size, const char* _format
|
|||
if (!(_condition) ) \
|
||||
{ \
|
||||
BX_TRACE("CHECK " _format, ##__VA_ARGS__); \
|
||||
bx::debugBreak(); \
|
||||
bgfx::fatal(bgfx::Fatal::DebugCheck, _format, ##__VA_ARGS__); \
|
||||
} \
|
||||
} while(0)
|
||||
#endif // 0
|
||||
|
@ -65,6 +66,7 @@ extern void dbgPrintfData(const void* _data, uint32_t _size, const char* _format
|
|||
#include <bx/ringbuffer.h>
|
||||
#include <bx/uint32_t.h>
|
||||
#include <bx/readerwriter.h>
|
||||
#include <bx/string.h>
|
||||
|
||||
#include "dds.h"
|
||||
|
||||
|
@ -109,8 +111,6 @@ namespace stl {
|
|||
# include <xtl.h>
|
||||
#endif // BX_PLATFORM_*
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <bx/cpu.h>
|
||||
#include <bx/thread.h>
|
||||
#include <bx/timer.h>
|
||||
|
@ -196,7 +196,6 @@ namespace bgfx
|
|||
extern ReallocFn g_realloc;
|
||||
extern FreeFn g_free;
|
||||
|
||||
void fatal(Fatal::Enum _code, const char* _format, ...);
|
||||
void release(const Memory* _mem);
|
||||
void saveTga(const char* _filePath, uint32_t _width, uint32_t _height, uint32_t _srcPitch, const void* _src, bool _grayscale = false, bool _yflip = false);
|
||||
const char* getAttribName(Attrib::Enum _attr);
|
||||
|
@ -323,7 +322,7 @@ namespace bgfx
|
|||
{
|
||||
char* temp = (char*)alloca(m_width);
|
||||
|
||||
uint32_t num = vsnprintf(temp, m_width, _format, _argList);
|
||||
uint32_t num = bx::vsnprintf(temp, m_width, _format, _argList);
|
||||
|
||||
uint8_t* mem = &m_mem[(_y*m_width+_x)*2];
|
||||
for (uint32_t ii = 0, xx = _x; ii < num && xx < m_width; ++ii, ++xx)
|
||||
|
@ -986,7 +985,11 @@ namespace bgfx
|
|||
|
||||
if (0 < m_numDropped)
|
||||
{
|
||||
BX_TRACE("Too many draw calls: %d, dropped %d (max: %d)", m_num+m_numDropped, m_numDropped, BGFX_CONFIG_MAX_DRAW_CALLS);
|
||||
BX_TRACE("Too many draw calls: %d, dropped %d (max: %d)"
|
||||
, m_num+m_numDropped
|
||||
, m_numDropped
|
||||
, BGFX_CONFIG_MAX_DRAW_CALLS
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1104,7 +1107,7 @@ namespace bgfx
|
|||
void submitMask(uint32_t _viewMask, int32_t _depth);
|
||||
void sort();
|
||||
|
||||
bool checkAvailTransientIndexBuffer(uint16_t _num)
|
||||
bool checkAvailTransientIndexBuffer(uint32_t _num)
|
||||
{
|
||||
uint32_t offset = m_iboffset;
|
||||
uint32_t iboffset = offset + _num*sizeof(uint16_t);
|
||||
|
@ -1113,16 +1116,16 @@ namespace bgfx
|
|||
return num == _num;
|
||||
}
|
||||
|
||||
uint32_t allocTransientIndexBuffer(uint16_t& _num)
|
||||
uint32_t allocTransientIndexBuffer(uint32_t& _num)
|
||||
{
|
||||
uint32_t offset = m_iboffset;
|
||||
m_iboffset = offset + _num*sizeof(uint16_t);
|
||||
m_iboffset = uint32_min(m_iboffset, BGFX_CONFIG_TRANSIENT_INDEX_BUFFER_SIZE);
|
||||
_num = uint16_t( (m_iboffset-offset)/sizeof(uint16_t) );
|
||||
_num = (m_iboffset-offset)/sizeof(uint16_t);
|
||||
return offset;
|
||||
}
|
||||
|
||||
bool checkAvailTransientVertexBuffer(uint16_t _num, uint16_t _stride)
|
||||
bool checkAvailTransientVertexBuffer(uint32_t _num, uint16_t _stride)
|
||||
{
|
||||
uint32_t offset = strideAlign(m_vboffset, _stride);
|
||||
uint32_t vboffset = offset + _num * _stride;
|
||||
|
@ -1131,12 +1134,12 @@ namespace bgfx
|
|||
return num == _num;
|
||||
}
|
||||
|
||||
uint32_t allocTransientVertexBuffer(uint16_t& _num, uint16_t _stride)
|
||||
uint32_t allocTransientVertexBuffer(uint32_t& _num, uint16_t _stride)
|
||||
{
|
||||
uint32_t offset = strideAlign(m_vboffset, _stride);
|
||||
m_vboffset = offset + _num * _stride;
|
||||
m_vboffset = uint32_min(m_vboffset, BGFX_CONFIG_TRANSIENT_VERTEX_BUFFER_SIZE);
|
||||
_num = uint16_t( (m_vboffset-offset)/_stride);
|
||||
_num = (m_vboffset-offset)/_stride;
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
@ -1778,7 +1781,7 @@ namespace bgfx
|
|||
g_free(const_cast<TransientIndexBuffer*>(_ib) );
|
||||
}
|
||||
|
||||
void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint16_t _num)
|
||||
void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint32_t _num)
|
||||
{
|
||||
uint32_t offset = m_submit->allocTransientIndexBuffer(_num);
|
||||
|
||||
|
@ -1835,7 +1838,7 @@ namespace bgfx
|
|||
g_free(const_cast<TransientVertexBuffer*>(_vb) );
|
||||
}
|
||||
|
||||
void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint16_t _num, const VertexDecl& _decl)
|
||||
void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint32_t _num, const VertexDecl& _decl)
|
||||
{
|
||||
VertexDeclHandle declHandle = m_declRef.find(_decl.m_hash);
|
||||
|
||||
|
@ -1861,7 +1864,7 @@ namespace bgfx
|
|||
_tvb->decl = declHandle;
|
||||
}
|
||||
|
||||
const InstanceDataBuffer* allocInstanceDataBuffer(uint16_t _num, uint16_t _stride)
|
||||
const InstanceDataBuffer* allocInstanceDataBuffer(uint32_t _num, uint16_t _stride)
|
||||
{
|
||||
uint16_t stride = BX_ALIGN_16(_stride);
|
||||
uint32_t offset = m_submit->allocTransientVertexBuffer(_num, stride);
|
||||
|
@ -2290,7 +2293,7 @@ namespace bgfx
|
|||
}
|
||||
else
|
||||
{
|
||||
m_view[_id].setIdentity();
|
||||
m_proj[_id].setIdentity();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
#ifndef __CONFIG_H__
|
||||
#define __CONFIG_H__
|
||||
|
||||
#ifndef BGFX_CONFIG_DEBUG
|
||||
# define BGFX_CONFIG_DEBUG 0
|
||||
#endif // BGFX_CONFIG_DEBUG
|
||||
|
||||
#if !defined(BGFX_CONFIG_RENDERER_DIRECT3D9) \
|
||||
&& !defined(BGFX_CONFIG_RENDERER_DIRECT3D11) \
|
||||
&& !defined(BGFX_CONFIG_RENDERER_OPENGL) \
|
||||
|
|
|
@ -77,6 +77,8 @@ namespace bgfx
|
|||
success = eglMakeCurrent(m_display, m_surface, m_surface, m_context);
|
||||
BGFX_FATAL(success, Fatal::UnableToInitialize, "Failed to set context.");
|
||||
|
||||
eglSwapInterval(m_display, 0);
|
||||
|
||||
# if BX_PLATFORM_EMSCRIPTEN
|
||||
emscripten_set_canvas_size(_width, _height);
|
||||
# endif // BX_PLATFORM_EMSCRIPTEN
|
||||
|
@ -93,8 +95,9 @@ namespace bgfx
|
|||
m_context = NULL;
|
||||
}
|
||||
|
||||
void GlContext::resize(uint32_t /*_width*/, uint32_t /*_height*/)
|
||||
void GlContext::resize(uint32_t /*_width*/, uint32_t /*_height*/, bool _vsync)
|
||||
{
|
||||
eglSwapInterval(m_display, _vsync ? 1 : 0);
|
||||
}
|
||||
|
||||
void GlContext::swap()
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace bgfx
|
|||
|
||||
void create(uint32_t _width, uint32_t _height);
|
||||
void destroy();
|
||||
void resize(uint32_t _width, uint32_t _height);
|
||||
void resize(uint32_t _width, uint32_t _height, bool _vsync);
|
||||
void swap();
|
||||
void import();
|
||||
|
||||
|
|
|
@ -5,13 +5,20 @@
|
|||
|
||||
#include "bgfx_p.h"
|
||||
|
||||
#if (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
#if BX_PLATFORM_LINUX & (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
# include "renderer_gl.h"
|
||||
|
||||
# if BX_PLATFORM_LINUX
|
||||
# define GLX_GLXEXT_PROTOTYPES
|
||||
# include <glx/glxext.h>
|
||||
|
||||
namespace bgfx
|
||||
{
|
||||
typedef int (*PFNGLXSWAPINTERVALMESAPROC)(uint32_t _interval);
|
||||
|
||||
PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB;
|
||||
PFNGLXSWAPINTERVALEXTPROC glXSwapIntervalEXT;
|
||||
PFNGLXSWAPINTERVALMESAPROC glXSwapIntervalMESA;
|
||||
PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI;
|
||||
|
||||
# define GL_IMPORT(_optional, _proto, _func) _proto _func
|
||||
# include "glimports.h"
|
||||
# undef GL_IMPORT
|
||||
|
@ -39,6 +46,12 @@ namespace bgfx
|
|||
, minor
|
||||
);
|
||||
|
||||
int32_t screen = DefaultScreen(s_display);
|
||||
|
||||
const char* extensions = glXQueryExtensionsString(s_display, screen);
|
||||
BX_TRACE("GLX extensions:");
|
||||
dumpExtensions(extensions);
|
||||
|
||||
const int attrsGlx[] =
|
||||
{
|
||||
GLX_RENDER_TYPE, GLX_RGBA_BIT,
|
||||
|
@ -57,7 +70,7 @@ namespace bgfx
|
|||
GLXFBConfig bestConfig = NULL;
|
||||
|
||||
int numConfigs;
|
||||
GLXFBConfig* configs = glXChooseFBConfig(s_display, DefaultScreen(s_display), attrsGlx, &numConfigs);
|
||||
GLXFBConfig* configs = glXChooseFBConfig(s_display, screen, attrsGlx, &numConfigs);
|
||||
|
||||
BX_TRACE("glX num configs %d", numConfigs);
|
||||
|
||||
|
@ -113,8 +126,7 @@ namespace bgfx
|
|||
XFree(visualInfo);
|
||||
|
||||
#if BGFX_CONFIG_RENDERER_OPENGL >= 31
|
||||
typedef GLXContext (*glXCreateContextAttribsARBProc)(Display*, GLXFBConfig, GLXContext, Bool, const int*);
|
||||
glXCreateContextAttribsARBProc glXCreateContextAttribsARB = (glXCreateContextAttribsARBProc)glXGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB");
|
||||
glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress( (const GLubyte*)"glXCreateContextAttribsARB");
|
||||
if (NULL != glXCreateContextAttribsARB)
|
||||
{
|
||||
BX_TRACE("Create GL 3.1 context.");
|
||||
|
@ -142,7 +154,33 @@ namespace bgfx
|
|||
|
||||
import();
|
||||
|
||||
glXSwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC)glXGetProcAddress( (const GLubyte*)"glXSwapIntervalEXT");
|
||||
if (NULL != glXSwapIntervalEXT)
|
||||
{
|
||||
BX_TRACE("Using glXSwapIntervalEXT.");
|
||||
glXSwapIntervalEXT(s_display, s_window, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
glXSwapIntervalMESA = (PFNGLXSWAPINTERVALMESAPROC)glXGetProcAddress( (const GLubyte*)"glXSwapIntervalMESA");
|
||||
if (NULL != glXSwapIntervalMESA)
|
||||
{
|
||||
BX_TRACE("Using glXSwapIntervalMESA.");
|
||||
glXSwapIntervalMESA(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glXGetProcAddress( (const GLubyte*)"glXSwapIntervalSGI");
|
||||
if (NULL != glXSwapIntervalSGI)
|
||||
{
|
||||
BX_TRACE("Using glXSwapIntervalSGI.");
|
||||
glXSwapIntervalSGI(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
glXMakeCurrent(s_display, s_window, m_context);
|
||||
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
glXSwapBuffers(s_display, s_window);
|
||||
|
@ -154,8 +192,22 @@ namespace bgfx
|
|||
glXDestroyContext(s_display, m_context);
|
||||
}
|
||||
|
||||
void GlContext::resize(uint32_t _width, uint32_t _height)
|
||||
void GlContext::resize(uint32_t /*_width*/, uint32_t /*_height*/, bool _vsync)
|
||||
{
|
||||
int32_t interval = _vsync ? 1 : 0;
|
||||
|
||||
if (NULL != glXSwapIntervalEXT)
|
||||
{
|
||||
glXSwapIntervalEXT(s_display, s_window, interval);
|
||||
}
|
||||
else if (NULL != glXSwapIntervalMESA)
|
||||
{
|
||||
glXSwapIntervalMESA(interval);
|
||||
}
|
||||
else if (NULL != glXSwapIntervalSGI)
|
||||
{
|
||||
glXSwapIntervalSGI(interval);
|
||||
}
|
||||
}
|
||||
|
||||
void GlContext::swap()
|
||||
|
@ -177,6 +229,4 @@ namespace bgfx
|
|||
|
||||
} // namespace bgfx
|
||||
|
||||
# endif // BX_PLATFORM_LINUX
|
||||
#endif // (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
|
||||
#endif // BX_PLATFORM_LINUX & (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace bgfx
|
|||
|
||||
void create(uint32_t _width, uint32_t _height);
|
||||
void destroy();
|
||||
void resize(uint32_t _width, uint32_t _height);
|
||||
void resize(uint32_t _width, uint32_t _height, bool _vsync);
|
||||
void swap();
|
||||
void import();
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ namespace bgfx
|
|||
|
||||
void create(uint32_t _width, uint32_t _height);
|
||||
void destroy();
|
||||
void resize(uint32_t _width, uint32_t _height);
|
||||
void resize(uint32_t _width, uint32_t _height, bool _vsync);
|
||||
void swap();
|
||||
void import();
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ namespace bgfx
|
|||
[glView release];
|
||||
}
|
||||
|
||||
void GlContext::resize(uint32_t _width, uint32_t _height)
|
||||
void GlContext::resize(uint32_t _width, uint32_t _height, bool _vsync)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -5,11 +5,9 @@
|
|||
|
||||
#include "bgfx_p.h"
|
||||
|
||||
#if (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
#if BX_PLATFORM_NACL & (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
# include "renderer_gl.h"
|
||||
|
||||
# if BX_PLATFORM_NACL
|
||||
|
||||
namespace bgfx
|
||||
{
|
||||
# define GL_IMPORT(_optional, _proto, _func) _proto _func
|
||||
|
@ -49,7 +47,7 @@ namespace bgfx
|
|||
{
|
||||
}
|
||||
|
||||
void GlContext::resize(uint32_t _width, uint32_t _height)
|
||||
void GlContext::resize(uint32_t _width, uint32_t _height, bool /*_vsync*/)
|
||||
{
|
||||
m_graphicsInterface->ResizeBuffers(m_context, _width, _height);
|
||||
}
|
||||
|
@ -65,5 +63,4 @@ namespace bgfx
|
|||
}
|
||||
} // namespace bgfx
|
||||
|
||||
# endif // BX_PLATFORM_NACL
|
||||
#endif // (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
#endif // BX_PLATFORM_NACL & (BGFX_CONFIG_RENDERER_OPENGLES2|BGFX_CONFIG_RENDERER_OPENGLES3|BGFX_CONFIG_RENDERER_OPENGL)
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace bgfx
|
|||
|
||||
void create(uint32_t _width, uint32_t _height);
|
||||
void destroy();
|
||||
void resize(uint32_t _width, uint32_t _height);
|
||||
void resize(uint32_t _width, uint32_t _height, bool _vsync);
|
||||
void swap();
|
||||
void import();
|
||||
|
||||
|
|
|
@ -120,34 +120,9 @@ namespace bgfx
|
|||
|
||||
if (NULL != wglGetExtensionsStringARB)
|
||||
{
|
||||
BX_TRACE("WGL extensions:");
|
||||
const char* extensions = (const char*)wglGetExtensionsStringARB(hdc);
|
||||
if (NULL != extensions)
|
||||
{
|
||||
char name[1024];
|
||||
const char* pos = extensions;
|
||||
const char* end = extensions + strlen(extensions);
|
||||
while (pos < end)
|
||||
{
|
||||
uint32_t len;
|
||||
const char* space = strchr(pos, ' ');
|
||||
if (NULL != space)
|
||||
{
|
||||
len = uint32_min(sizeof(name), (uint32_t)(space - pos) );
|
||||
}
|
||||
else
|
||||
{
|
||||
len = uint32_min(sizeof(name), (uint32_t)strlen(pos) );
|
||||
}
|
||||
|
||||
strncpy(name, pos, len);
|
||||
name[len] = '\0';
|
||||
|
||||
BX_TRACE("\t%s", name);
|
||||
|
||||
pos += len+1;
|
||||
}
|
||||
}
|
||||
BX_TRACE("WGL extensions:");
|
||||
dumpExtensions(extensions);
|
||||
}
|
||||
|
||||
if (NULL != wglChoosePixelFormatARB
|
||||
|
@ -203,7 +178,7 @@ namespace bgfx
|
|||
|
||||
uint32_t flags = BGFX_CONFIG_DEBUG ? WGL_CONTEXT_DEBUG_BIT_ARB : 0;
|
||||
BX_UNUSED(flags);
|
||||
int32_t contextAttrs[] =
|
||||
int32_t contextAttrs[9] =
|
||||
{
|
||||
#if BGFX_CONFIG_RENDERER_OPENGL >= 31
|
||||
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
|
||||
|
@ -213,6 +188,8 @@ namespace bgfx
|
|||
#else
|
||||
WGL_CONTEXT_MAJOR_VERSION_ARB, 2,
|
||||
WGL_CONTEXT_MINOR_VERSION_ARB, 1,
|
||||
0, 0,
|
||||
0, 0,
|
||||
#endif // BGFX_CONFIG_RENDERER_OPENGL >= 31
|
||||
0
|
||||
};
|
||||
|
@ -261,8 +238,12 @@ namespace bgfx
|
|||
m_opengl32dll = NULL;
|
||||
}
|
||||
|
||||
void GlContext::resize(uint32_t /*_width*/, uint32_t /*_height*/)
|
||||
void GlContext::resize(uint32_t /*_width*/, uint32_t /*_height*/, bool _vsync)
|
||||
{
|
||||
if (NULL != wglSwapIntervalEXT)
|
||||
{
|
||||
wglSwapIntervalEXT(_vsync ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
void GlContext::swap()
|
||||
|
|
|
@ -66,7 +66,7 @@ namespace bgfx
|
|||
|
||||
void create(uint32_t _width, uint32_t _height);
|
||||
void destroy();
|
||||
void resize(uint32_t _width, uint32_t _height);
|
||||
void resize(uint32_t _width, uint32_t _height, bool _vsync);
|
||||
void swap();
|
||||
void import();
|
||||
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
|
||||
namespace bgfx
|
||||
{
|
||||
typedef HRESULT (WINAPI * PFN_CREATEDXGIFACTORY)(REFIID _riid, void** _factory);
|
||||
|
||||
static const D3D11_PRIMITIVE_TOPOLOGY s_primType[] =
|
||||
{
|
||||
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
|
||||
|
@ -322,8 +324,58 @@ namespace bgfx
|
|||
PFN_D3D11_CREATE_DEVICE d3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE)GetProcAddress(m_d3d11dll, "D3D11CreateDevice");
|
||||
BGFX_FATAL(NULL != d3D11CreateDevice, Fatal::UnableToInitialize, "Function D3D11CreateDevice not found.");
|
||||
|
||||
m_dxgidll = LoadLibrary("dxgi.dll");
|
||||
BGFX_FATAL(NULL != m_dxgidll, Fatal::UnableToInitialize, "Failed to load dxgi.dll.");
|
||||
|
||||
PFN_CREATEDXGIFACTORY dxgiCreateDXGIFactory = (PFN_CREATEDXGIFACTORY)GetProcAddress(m_dxgidll, "CreateDXGIFactory");
|
||||
BGFX_FATAL(NULL != dxgiCreateDXGIFactory, Fatal::UnableToInitialize, "Function CreateDXGIFactory not found.");
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
IDXGIFactory* factory;
|
||||
hr = dxgiCreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&factory);
|
||||
BGFX_FATAL(SUCCEEDED(hr), Fatal::UnableToInitialize, "Unable to create DXGI factory.");
|
||||
|
||||
m_adapter = NULL;
|
||||
m_driverType = D3D_DRIVER_TYPE_HARDWARE;
|
||||
|
||||
IDXGIAdapter* adapter;
|
||||
for (uint32_t ii = 0; DXGI_ERROR_NOT_FOUND != factory->EnumAdapters(ii, &adapter); ++ii)
|
||||
{
|
||||
DXGI_ADAPTER_DESC desc;
|
||||
hr = adapter->GetDesc(&desc);
|
||||
if (SUCCEEDED(hr) )
|
||||
{
|
||||
BX_TRACE("Adapter #%d", ii);
|
||||
|
||||
char description[countof(desc.Description)];
|
||||
wcstombs(description, desc.Description, countof(desc.Description) );
|
||||
BX_TRACE("\tDescription: %s", description);
|
||||
BX_TRACE("\tVendorId: 0x%08x, DeviceId: 0x%08x, SubSysId: 0x%08x, Revision: 0x%08x"
|
||||
, desc.VendorId
|
||||
, desc.DeviceId
|
||||
, desc.SubSysId
|
||||
, desc.Revision
|
||||
);
|
||||
BX_TRACE("\tMemory: %" PRIi64 " (video), %" PRIi64 " (system), %" PRIi64 " (shared)"
|
||||
, desc.DedicatedVideoMemory
|
||||
, desc.DedicatedSystemMemory
|
||||
, desc.SharedSystemMemory
|
||||
);
|
||||
|
||||
#if BGFX_CONFIG_DEBUG_PERFHUD
|
||||
if (0 != strstr(description, "PerfHUD") )
|
||||
{
|
||||
m_adapter = adapter;
|
||||
m_driverType = D3D_DRIVER_TYPE_REFERENCE;
|
||||
}
|
||||
#endif // BGFX_CONFIG_DEBUG_PERFHUD
|
||||
}
|
||||
|
||||
DX_RELEASE(adapter, adapter == m_adapter ? 1 : 0);
|
||||
}
|
||||
DX_RELEASE(factory, NULL != m_adapter ? 1 : 0);
|
||||
|
||||
D3D_FEATURE_LEVEL features[] =
|
||||
{
|
||||
D3D_FEATURE_LEVEL_11_0,
|
||||
|
@ -350,8 +402,8 @@ namespace bgfx
|
|||
|
||||
D3D_FEATURE_LEVEL featureLevel;
|
||||
|
||||
hr = d3D11CreateDevice(NULL
|
||||
, D3D_DRIVER_TYPE_HARDWARE
|
||||
hr = d3D11CreateDevice(m_adapter
|
||||
, m_driverType
|
||||
, NULL
|
||||
, flags
|
||||
, features
|
||||
|
@ -367,11 +419,13 @@ namespace bgfx
|
|||
hr = m_device->QueryInterface(__uuidof(IDXGIDevice), (void**)&device);
|
||||
BGFX_FATAL(SUCCEEDED(hr), Fatal::UnableToInitialize, "Unable to create Direct3D11 device.");
|
||||
|
||||
IDXGIAdapter* adapter;
|
||||
hr = device->GetParent(__uuidof(IDXGIAdapter), (void**)&adapter);
|
||||
BGFX_FATAL(SUCCEEDED(hr), Fatal::UnableToInitialize, "Unable to create Direct3D11 device.");
|
||||
DX_RELEASE(device, 2);
|
||||
|
||||
hr = adapter->GetDesc(&m_adapterDesc);
|
||||
BGFX_FATAL(SUCCEEDED(hr), Fatal::UnableToInitialize, "Unable to create Direct3D11 device.");
|
||||
|
||||
hr = adapter->GetParent(__uuidof(IDXGIFactory), (void**)&m_factory);
|
||||
BGFX_FATAL(SUCCEEDED(hr), Fatal::UnableToInitialize, "Unable to create Direct3D11 device.");
|
||||
DX_RELEASE(adapter, 2);
|
||||
|
@ -444,6 +498,7 @@ namespace bgfx
|
|||
DX_RELEASE(m_device, 0);
|
||||
DX_RELEASE(m_factory, 0);
|
||||
|
||||
FreeLibrary(m_dxgidll);
|
||||
FreeLibrary(m_d3d11dll);
|
||||
}
|
||||
|
||||
|
@ -1032,6 +1087,10 @@ namespace bgfx
|
|||
}
|
||||
|
||||
HMODULE m_d3d11dll;
|
||||
HMODULE m_dxgidll;
|
||||
D3D_DRIVER_TYPE m_driverType;
|
||||
IDXGIAdapter* m_adapter;
|
||||
DXGI_ADAPTER_DESC m_adapterDesc;
|
||||
IDXGIFactory* m_factory;
|
||||
IDXGISwapChain* m_swapChain;
|
||||
ID3D11Device* m_device;
|
||||
|
@ -2675,8 +2734,20 @@ namespace bgfx
|
|||
double toMs = 1000.0/freq;
|
||||
|
||||
tvm.clear();
|
||||
uint16_t pos = 10;
|
||||
tvm.printf(0, 0, BGFX_CONFIG_DEBUG ? 0x89 : 0x8f, " " BGFX_RENDERER_NAME " ");
|
||||
uint16_t pos = 0;
|
||||
tvm.printf(0, pos++, BGFX_CONFIG_DEBUG ? 0x89 : 0x8f, " " BGFX_RENDERER_NAME " ");
|
||||
|
||||
const DXGI_ADAPTER_DESC& desc = s_renderCtx.m_adapterDesc;
|
||||
char description[countof(desc.Description)];
|
||||
wcstombs(description, desc.Description, countof(desc.Description) );
|
||||
tvm.printf(0, pos++, 0x0f, " Device: %s", description);
|
||||
tvm.printf(0, pos++, 0x0f, " Memory: %" PRIi64 " (video), %" PRIi64 " (system), %" PRIi64 " (shared)"
|
||||
, desc.DedicatedVideoMemory
|
||||
, desc.DedicatedSystemMemory
|
||||
, desc.SharedSystemMemory
|
||||
);
|
||||
|
||||
pos = 10;
|
||||
tvm.printf(10, pos++, 0x8e, " Frame: %7.3f, % 7.3f \x1f, % 7.3f \x1e [ms] / % 6.2f FPS"
|
||||
, double(frameTime)*toMs
|
||||
, double(min)*toMs
|
||||
|
|
|
@ -273,13 +273,14 @@ namespace bgfx
|
|||
for (uint32_t ii = 0; ii < adapterCount; ++ii)
|
||||
{
|
||||
D3DADAPTER_IDENTIFIER9 identifier;
|
||||
DX_CHECK(m_d3d9->GetAdapterIdentifier(ii, 0, &identifier) );
|
||||
|
||||
BX_TRACE("Adapter #%d", ii);
|
||||
BX_TRACE("\tDriver: %s", identifier.Driver);
|
||||
BX_TRACE("\tDescription: %s", identifier.Description);
|
||||
BX_TRACE("\tDeviceName: %s", identifier.DeviceName);
|
||||
BX_TRACE("\tVendorId: 0x%08x, DeviceId: 0x%08x, SubSysId: 0x%08x, Revision: 0x%08x"
|
||||
HRESULT hr = m_d3d9->GetAdapterIdentifier(ii, 0, &identifier);
|
||||
if (SUCCEEDED(hr) )
|
||||
{
|
||||
BX_TRACE("Adapter #%d", ii);
|
||||
BX_TRACE("\tDriver: %s", identifier.Driver);
|
||||
BX_TRACE("\tDescription: %s", identifier.Description);
|
||||
BX_TRACE("\tDeviceName: %s", identifier.DeviceName);
|
||||
BX_TRACE("\tVendorId: 0x%08x, DeviceId: 0x%08x, SubSysId: 0x%08x, Revision: 0x%08x"
|
||||
, identifier.VendorId
|
||||
, identifier.DeviceId
|
||||
, identifier.SubSysId
|
||||
|
@ -287,18 +288,18 @@ namespace bgfx
|
|||
);
|
||||
|
||||
#if BGFX_CONFIG_DEBUG_PERFHUD
|
||||
if (0 != strstr(identifier.Description, "PerfHUD") )
|
||||
{
|
||||
m_adapter = ii;
|
||||
m_deviceType = D3DDEVTYPE_REF;
|
||||
}
|
||||
if (0 != strstr(identifier.Description, "PerfHUD") )
|
||||
{
|
||||
m_adapter = ii;
|
||||
m_deviceType = D3DDEVTYPE_REF;
|
||||
}
|
||||
#endif // BGFX_CONFIG_DEBUG_PERFHUD
|
||||
}
|
||||
}
|
||||
|
||||
D3DADAPTER_IDENTIFIER9 identifier;
|
||||
DX_CHECK(m_d3d9->GetAdapterIdentifier(m_adapter, 0, &identifier) );
|
||||
m_amd = identifier.VendorId == 0x1002;
|
||||
m_nvidia = identifier.VendorId == 0x10de;
|
||||
DX_CHECK(m_d3d9->GetAdapterIdentifier(m_adapter, 0, &m_identifier) );
|
||||
m_amd = m_identifier.VendorId == 0x1002;
|
||||
m_nvidia = m_identifier.VendorId == 0x10de;
|
||||
|
||||
uint32_t behaviorFlags[] =
|
||||
{
|
||||
|
@ -875,6 +876,7 @@ namespace bgfx
|
|||
D3DDEVTYPE m_deviceType;
|
||||
D3DPRESENT_PARAMETERS m_params;
|
||||
uint32_t m_flags;
|
||||
D3DADAPTER_IDENTIFIER9 m_identifier;
|
||||
|
||||
bool m_initialized;
|
||||
bool m_amd;
|
||||
|
@ -2772,8 +2774,13 @@ namespace bgfx
|
|||
double toMs = 1000.0/freq;
|
||||
|
||||
tvm.clear();
|
||||
uint16_t pos = 10;
|
||||
tvm.printf(0, 0, BGFX_CONFIG_DEBUG ? 0x89 : 0x8f, " " BGFX_RENDERER_NAME " ");
|
||||
uint16_t pos = 0;
|
||||
tvm.printf(0, pos++, BGFX_CONFIG_DEBUG ? 0x89 : 0x8f, " " BGFX_RENDERER_NAME " ");
|
||||
|
||||
const D3DADAPTER_IDENTIFIER9& identifier = s_renderCtx.m_identifier;
|
||||
tvm.printf(0, pos++, 0x0f, " Device: %s (%s)", identifier.Description, identifier.Driver);
|
||||
|
||||
pos = 10;
|
||||
tvm.printf(10, pos++, 0x8e, " Frame: %7.3f, % 7.3f \x1f, % 7.3f \x1e [ms] / % 6.2f FPS"
|
||||
, double(frameTime)*toMs
|
||||
, double(min)*toMs
|
||||
|
|
|
@ -180,12 +180,42 @@ namespace bgfx
|
|||
glGetError(); // ignore error if glGetString returns NULL.
|
||||
if (NULL != str)
|
||||
{
|
||||
return bx::hashMurmur2A(str, strlen(str) );
|
||||
return bx::hashMurmur2A(str, (uint32_t)strlen(str) );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void dumpExtensions(const char* _extensions)
|
||||
{
|
||||
if (NULL != _extensions)
|
||||
{
|
||||
char name[1024];
|
||||
const char* pos = _extensions;
|
||||
const char* end = _extensions + strlen(_extensions);
|
||||
while (pos < end)
|
||||
{
|
||||
uint32_t len;
|
||||
const char* space = strchr(pos, ' ');
|
||||
if (NULL != space)
|
||||
{
|
||||
len = uint32_min(sizeof(name), (uint32_t)(space - pos) );
|
||||
}
|
||||
else
|
||||
{
|
||||
len = uint32_min(sizeof(name), (uint32_t)strlen(pos) );
|
||||
}
|
||||
|
||||
strncpy(name, pos, len);
|
||||
name[len] = '\0';
|
||||
|
||||
BX_TRACE("\t%s", name);
|
||||
|
||||
pos += len+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if BGFX_CONFIG_RENDERER_OPENGL
|
||||
const char* toString(GLenum _enum)
|
||||
{
|
||||
|
@ -261,7 +291,8 @@ namespace bgfx
|
|||
|
||||
uint32_t msaa = 1<<( (m_resolution.m_flags&BGFX_RESET_MSAA_MASK)>>BGFX_RESET_MSAA_SHIFT);
|
||||
msaa = uint32_min(m_maxMsaa, msaa == 0 ? 0 : 1<<msaa);
|
||||
setRenderContextSize(_resolution.m_width, _resolution.m_height, msaa);
|
||||
bool vsync = !!(m_resolution.m_flags&BGFX_RESET_VSYNC);
|
||||
setRenderContextSize(_resolution.m_width, _resolution.m_height, msaa, vsync);
|
||||
updateCapture();
|
||||
}
|
||||
}
|
||||
|
@ -363,7 +394,7 @@ namespace bgfx
|
|||
#endif // BGFX_CONFIG_RENDERER_OPENGL|BGFX_CONFIG_RENDERER_OPENGLES3
|
||||
}
|
||||
|
||||
void setRenderContextSize(uint32_t _width, uint32_t _height, uint32_t _msaa = 0)
|
||||
void setRenderContextSize(uint32_t _width, uint32_t _height, uint32_t _msaa = 0, bool _vsync = false)
|
||||
{
|
||||
if (_width != 0
|
||||
|| _height != 0)
|
||||
|
@ -376,7 +407,7 @@ namespace bgfx
|
|||
{
|
||||
destroyMsaaFbo();
|
||||
|
||||
m_glctx.resize(_width, _height);
|
||||
m_glctx.resize(_width, _height, _vsync);
|
||||
|
||||
createMsaaFbo(_width, _height, _msaa);
|
||||
}
|
||||
|
@ -1049,6 +1080,7 @@ namespace bgfx
|
|||
, data
|
||||
, offset
|
||||
);
|
||||
BX_UNUSED(offset);
|
||||
}
|
||||
|
||||
m_constantBuffer->finish();
|
||||
|
@ -2256,6 +2288,7 @@ namespace bgfx
|
|||
}
|
||||
|
||||
BX_TRACE("GL_EXTENSION%s: %s", supported ? " (supported)" : "", name);
|
||||
BX_UNUSED(supported);
|
||||
|
||||
pos += len+1;
|
||||
}
|
||||
|
|
|
@ -280,7 +280,9 @@ namespace bgfx
|
|||
#define GL_IMPORT(_optional, _proto, _func) extern _proto _func
|
||||
#include "glimports.h"
|
||||
#undef GL_IMPORT
|
||||
|
||||
|
||||
void dumpExtensions(const char* _extensions);
|
||||
|
||||
class ConstantBuffer;
|
||||
|
||||
class VaoCache
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <bx/debug.h>
|
||||
#include <bx/hash.h>
|
||||
#include <bx/uint32_t.h>
|
||||
#include <bx/countof.h>
|
||||
#include <bx/string.h>
|
||||
|
||||
#include "vertexdecl.h"
|
||||
|
||||
extern void dbgPrintf(const char* _format, ...);
|
||||
extern void dbgPrintfData(const void* _data, uint32_t _size, const char* _format, ...);
|
||||
|
||||
namespace bgfx
|
||||
{
|
||||
static const uint8_t s_attribTypeSizeDx9[AttribType::Count][4] =
|
||||
|
@ -56,6 +56,28 @@ namespace bgfx
|
|||
&s_attribTypeSizeGl,
|
||||
};
|
||||
|
||||
void dbgPrintfVargs(const char* _format, va_list _argList)
|
||||
{
|
||||
char temp[8192];
|
||||
char* out = temp;
|
||||
int32_t len = bx::vsnprintf(out, sizeof(temp), _format, _argList);
|
||||
if ( (int32_t)sizeof(temp) < len)
|
||||
{
|
||||
out = (char*)alloca(len+1);
|
||||
len = bx::vsnprintf(out, len, _format, _argList);
|
||||
}
|
||||
out[len] = '\0';
|
||||
bx::debugOutput(out);
|
||||
}
|
||||
|
||||
void dbgPrintf(const char* _format, ...)
|
||||
{
|
||||
va_list argList;
|
||||
va_start(argList, _format);
|
||||
dbgPrintfVargs(_format, argList);
|
||||
va_end(argList);
|
||||
}
|
||||
|
||||
void VertexDecl::begin(RendererType::Enum _renderer)
|
||||
{
|
||||
m_hash = _renderer; // use hash to store renderer type while building VertexDecl.
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue