summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/common/imgui/imgui.cpp
diff options
context:
space:
mode:
author Branimir Karadžić <branimirkaradzic@gmail.com>2017-01-02 14:05:50 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2017-01-02 14:05:50 +0100
commitfadb547f630d377b1ff69a7ab09f852855930c56 (patch)
treea77a08bbed897113aec7a95657fc5e0d902fc0b6 /3rdparty/bgfx/examples/common/imgui/imgui.cpp
parent04faaaf7ffb422f390262e119fe50db21683a831 (diff)
Updated BGFX (nw)
Diffstat (limited to '3rdparty/bgfx/examples/common/imgui/imgui.cpp')
-rw-r--r--3rdparty/bgfx/examples/common/imgui/imgui.cpp126
1 files changed, 37 insertions, 89 deletions
diff --git a/3rdparty/bgfx/examples/common/imgui/imgui.cpp b/3rdparty/bgfx/examples/common/imgui/imgui.cpp
index c9a10b45484..107ab522411 100644
--- a/3rdparty/bgfx/examples/common/imgui/imgui.cpp
+++ b/3rdparty/bgfx/examples/common/imgui/imgui.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2016 Branimir Karadzic. All rights reserved.
+ * Copyright 2011-2017 Branimir Karadzic. All rights reserved.
* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
*/
@@ -32,8 +32,11 @@
#include "imgui.h"
#include "ocornut_imgui.h"
+#include "../bgfx_utils.h"
#include "../nanovg/nanovg.h"
+#include <bgfx/embedded_shader.h>
+
// embedded shaders
#include "vs_imgui_color.bin.h"
#include "fs_imgui_color.bin.h"
@@ -47,6 +50,23 @@
#include "fs_imgui_image.bin.h"
#include "fs_imgui_image_swizz.bin.h"
+static const bgfx::EmbeddedShader s_embeddedShaders[] =
+{
+ BGFX_EMBEDDED_SHADER(vs_imgui_color),
+ BGFX_EMBEDDED_SHADER(fs_imgui_color),
+ BGFX_EMBEDDED_SHADER(vs_imgui_texture),
+ BGFX_EMBEDDED_SHADER(fs_imgui_texture),
+ BGFX_EMBEDDED_SHADER(vs_imgui_cubemap),
+ BGFX_EMBEDDED_SHADER(fs_imgui_cubemap),
+ BGFX_EMBEDDED_SHADER(vs_imgui_latlong),
+ BGFX_EMBEDDED_SHADER(fs_imgui_latlong),
+ BGFX_EMBEDDED_SHADER(vs_imgui_image),
+ BGFX_EMBEDDED_SHADER(fs_imgui_image),
+ BGFX_EMBEDDED_SHADER(fs_imgui_image_swizz),
+
+ BGFX_EMBEDDED_SHADER_END()
+};
+
// embedded font
#include "roboto_regular.ttf.h"
@@ -502,113 +522,41 @@ struct Imgui
u_imageSwizzle = bgfx::createUniform("u_swizzle", bgfx::UniformType::Vec4);
s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1);
- const bgfx::Memory* vs_imgui_color;
- const bgfx::Memory* fs_imgui_color;
- const bgfx::Memory* vs_imgui_texture;
- const bgfx::Memory* fs_imgui_texture;
- const bgfx::Memory* vs_imgui_cubemap;
- const bgfx::Memory* fs_imgui_cubemap;
- const bgfx::Memory* vs_imgui_latlong;
- const bgfx::Memory* fs_imgui_latlong;
- const bgfx::Memory* vs_imgui_image;
- const bgfx::Memory* fs_imgui_image;
- const bgfx::Memory* fs_imgui_image_swizz;
-
- switch (bgfx::getRendererType() )
- {
- case bgfx::RendererType::Direct3D9:
- vs_imgui_color = bgfx::makeRef(vs_imgui_color_dx9, sizeof(vs_imgui_color_dx9) );
- fs_imgui_color = bgfx::makeRef(fs_imgui_color_dx9, sizeof(fs_imgui_color_dx9) );
- vs_imgui_texture = bgfx::makeRef(vs_imgui_texture_dx9, sizeof(vs_imgui_texture_dx9) );
- fs_imgui_texture = bgfx::makeRef(fs_imgui_texture_dx9, sizeof(fs_imgui_texture_dx9) );
- vs_imgui_cubemap = bgfx::makeRef(vs_imgui_cubemap_dx9, sizeof(vs_imgui_cubemap_dx9) );
- fs_imgui_cubemap = bgfx::makeRef(fs_imgui_cubemap_dx9, sizeof(fs_imgui_cubemap_dx9) );
- vs_imgui_latlong = bgfx::makeRef(vs_imgui_latlong_dx9, sizeof(vs_imgui_latlong_dx9) );
- fs_imgui_latlong = bgfx::makeRef(fs_imgui_latlong_dx9, sizeof(fs_imgui_latlong_dx9) );
- vs_imgui_image = bgfx::makeRef(vs_imgui_image_dx9, sizeof(vs_imgui_image_dx9) );
- fs_imgui_image = bgfx::makeRef(fs_imgui_image_dx9, sizeof(fs_imgui_image_dx9) );
- fs_imgui_image_swizz = bgfx::makeRef(fs_imgui_image_swizz_dx9, sizeof(fs_imgui_image_swizz_dx9) );
- m_halfTexel = 0.5f;
- break;
-
- case bgfx::RendererType::Direct3D11:
- case bgfx::RendererType::Direct3D12:
- vs_imgui_color = bgfx::makeRef(vs_imgui_color_dx11, sizeof(vs_imgui_color_dx11) );
- fs_imgui_color = bgfx::makeRef(fs_imgui_color_dx11, sizeof(fs_imgui_color_dx11) );
- vs_imgui_texture = bgfx::makeRef(vs_imgui_texture_dx11, sizeof(vs_imgui_texture_dx11) );
- fs_imgui_texture = bgfx::makeRef(fs_imgui_texture_dx11, sizeof(fs_imgui_texture_dx11) );
- vs_imgui_cubemap = bgfx::makeRef(vs_imgui_cubemap_dx11, sizeof(vs_imgui_cubemap_dx11) );
- fs_imgui_cubemap = bgfx::makeRef(fs_imgui_cubemap_dx11, sizeof(fs_imgui_cubemap_dx11) );
- vs_imgui_latlong = bgfx::makeRef(vs_imgui_latlong_dx11, sizeof(vs_imgui_latlong_dx11) );
- fs_imgui_latlong = bgfx::makeRef(fs_imgui_latlong_dx11, sizeof(fs_imgui_latlong_dx11) );
- vs_imgui_image = bgfx::makeRef(vs_imgui_image_dx11, sizeof(vs_imgui_image_dx11) );
- fs_imgui_image = bgfx::makeRef(fs_imgui_image_dx11, sizeof(fs_imgui_image_dx11) );
- fs_imgui_image_swizz = bgfx::makeRef(fs_imgui_image_swizz_dx11, sizeof(fs_imgui_image_swizz_dx11) );
- break;
-
- case bgfx::RendererType::Metal:
- vs_imgui_color = bgfx::makeRef(vs_imgui_color_mtl, sizeof(vs_imgui_color_mtl) );
- fs_imgui_color = bgfx::makeRef(fs_imgui_color_mtl, sizeof(fs_imgui_color_mtl) );
- vs_imgui_texture = bgfx::makeRef(vs_imgui_texture_mtl, sizeof(vs_imgui_texture_mtl) );
- fs_imgui_texture = bgfx::makeRef(fs_imgui_texture_mtl, sizeof(fs_imgui_texture_mtl) );
- vs_imgui_cubemap = bgfx::makeRef(vs_imgui_cubemap_mtl, sizeof(vs_imgui_cubemap_mtl) );
- fs_imgui_cubemap = bgfx::makeRef(fs_imgui_cubemap_mtl, sizeof(fs_imgui_cubemap_mtl) );
- vs_imgui_latlong = bgfx::makeRef(vs_imgui_latlong_mtl, sizeof(vs_imgui_latlong_mtl) );
- fs_imgui_latlong = bgfx::makeRef(fs_imgui_latlong_mtl, sizeof(fs_imgui_latlong_mtl) );
- vs_imgui_image = bgfx::makeRef(vs_imgui_image_mtl, sizeof(vs_imgui_image_mtl) );
- fs_imgui_image = bgfx::makeRef(fs_imgui_image_mtl, sizeof(fs_imgui_image_mtl) );
- fs_imgui_image_swizz = bgfx::makeRef(fs_imgui_image_swizz_mtl, sizeof(fs_imgui_image_swizz_mtl) );
- break;
-
- default:
- vs_imgui_color = bgfx::makeRef(vs_imgui_color_glsl, sizeof(vs_imgui_color_glsl) );
- fs_imgui_color = bgfx::makeRef(fs_imgui_color_glsl, sizeof(fs_imgui_color_glsl) );
- vs_imgui_texture = bgfx::makeRef(vs_imgui_texture_glsl, sizeof(vs_imgui_texture_glsl) );
- fs_imgui_texture = bgfx::makeRef(fs_imgui_texture_glsl, sizeof(fs_imgui_texture_glsl) );
- vs_imgui_cubemap = bgfx::makeRef(vs_imgui_cubemap_glsl, sizeof(vs_imgui_cubemap_glsl) );
- fs_imgui_cubemap = bgfx::makeRef(fs_imgui_cubemap_glsl, sizeof(fs_imgui_cubemap_glsl) );
- vs_imgui_latlong = bgfx::makeRef(vs_imgui_latlong_glsl, sizeof(vs_imgui_latlong_glsl) );
- fs_imgui_latlong = bgfx::makeRef(fs_imgui_latlong_glsl, sizeof(fs_imgui_latlong_glsl) );
- vs_imgui_image = bgfx::makeRef(vs_imgui_image_glsl, sizeof(vs_imgui_image_glsl) );
- fs_imgui_image = bgfx::makeRef(fs_imgui_image_glsl, sizeof(fs_imgui_image_glsl) );
- fs_imgui_image_swizz = bgfx::makeRef(fs_imgui_image_swizz_glsl, sizeof(fs_imgui_image_swizz_glsl) );
- break;
- }
-
bgfx::ShaderHandle vsh;
bgfx::ShaderHandle fsh;
- vsh = bgfx::createShader(vs_imgui_color);
- fsh = bgfx::createShader(fs_imgui_color);
+ bgfx::RendererType::Enum type = bgfx::getRendererType();
+ vsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_imgui_color");
+ fsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_imgui_color");
m_colorProgram = bgfx::createProgram(vsh, fsh);
bgfx::destroyShader(vsh);
bgfx::destroyShader(fsh);
- vsh = bgfx::createShader(vs_imgui_texture);
- fsh = bgfx::createShader(fs_imgui_texture);
+ vsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_imgui_texture");
+ fsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_imgui_texture");
m_textureProgram = bgfx::createProgram(vsh, fsh);
bgfx::destroyShader(vsh);
bgfx::destroyShader(fsh);
- vsh = bgfx::createShader(vs_imgui_cubemap);
- fsh = bgfx::createShader(fs_imgui_cubemap);
+ vsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_imgui_cubemap");
+ fsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_imgui_cubemap");
m_cubeMapProgram = bgfx::createProgram(vsh, fsh);
bgfx::destroyShader(vsh);
bgfx::destroyShader(fsh);
- vsh = bgfx::createShader(vs_imgui_latlong);
- fsh = bgfx::createShader(fs_imgui_latlong);
+ vsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_imgui_latlong");
+ fsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_imgui_latlong");
m_latlongProgram = bgfx::createProgram(vsh, fsh);
bgfx::destroyShader(vsh);
bgfx::destroyShader(fsh);
- vsh = bgfx::createShader(vs_imgui_image);
- fsh = bgfx::createShader(fs_imgui_image);
+ vsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_imgui_image");
+ fsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_imgui_image");
m_imageProgram = bgfx::createProgram(vsh, fsh);
bgfx::destroyShader(fsh);
// Notice: using the same vsh.
- fsh = bgfx::createShader(fs_imgui_image_swizz);
+ fsh = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_imgui_image_swizz");
m_imageSwizzProgram = bgfx::createProgram(vsh, fsh);
bgfx::destroyShader(fsh);
bgfx::destroyShader(vsh);
@@ -1853,7 +1801,7 @@ struct Imgui
const uint32_t numVertices = 14;
const uint32_t numIndices = 36;
- if (bgfx::checkAvailTransientBuffers(numVertices, PosNormalVertex::ms_decl, numIndices) )
+ if (checkAvailTransientBuffers(numVertices, PosNormalVertex::ms_decl, numIndices) )
{
bgfx::TransientVertexBuffer tvb;
bgfx::allocTransientVertexBuffer(&tvb, numVertices, PosNormalVertex::ms_decl);
@@ -2388,7 +2336,7 @@ struct Imgui
}
uint32_t numVertices = _numCoords*6 + (_numCoords-2)*3;
- if (bgfx::checkAvailTransientVertexBuffer(numVertices, PosColorVertex::ms_decl) )
+ if (numVertices == bgfx::getAvailTransientVertexBuffer(numVertices, PosColorVertex::ms_decl) )
{
bgfx::TransientVertexBuffer tvb;
bgfx::allocTransientVertexBuffer(&tvb, numVertices, PosColorVertex::ms_decl);
@@ -2675,7 +2623,7 @@ struct Imgui
getTextLength(m_fonts[m_currentFontIdx].m_cdata, _text, numVertices);
}
- if (bgfx::checkAvailTransientVertexBuffer(numVertices, PosColorUvVertex::ms_decl) )
+ if (numVertices == bgfx::getAvailTransientVertexBuffer(numVertices, PosColorUvVertex::ms_decl) )
{
bgfx::TransientVertexBuffer tvb;
bgfx::allocTransientVertexBuffer(&tvb, numVertices, PosColorUvVertex::ms_decl);
@@ -2765,7 +2713,7 @@ struct Imgui
bool screenQuad(int32_t _x, int32_t _y, int32_t _width, uint32_t _height, bool _originBottomLeft = false)
{
- if (bgfx::checkAvailTransientVertexBuffer(6, PosUvVertex::ms_decl) )
+ if (6 == bgfx::getAvailTransientVertexBuffer(6, PosUvVertex::ms_decl) )
{
bgfx::TransientVertexBuffer vb;
bgfx::allocTransientVertexBuffer(&vb, 6, PosUvVertex::ms_decl);