diff options
author | 2017-01-02 14:05:50 +0100 | |
---|---|---|
committer | 2017-01-02 14:05:50 +0100 | |
commit | fadb547f630d377b1ff69a7ab09f852855930c56 (patch) | |
tree | a77a08bbed897113aec7a95657fc5e0d902fc0b6 /3rdparty/bgfx/examples/common/imgui/imgui.cpp | |
parent | 04faaaf7ffb422f390262e119fe50db21683a831 (diff) |
Updated BGFX (nw)
Diffstat (limited to '3rdparty/bgfx/examples/common/imgui/imgui.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/common/imgui/imgui.cpp | 126 |
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); |