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/font/text_buffer_manager.cpp | |
parent | 04faaaf7ffb422f390262e119fe50db21683a831 (diff) |
Updated BGFX (nw)
Diffstat (limited to '3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp | 85 |
1 files changed, 27 insertions, 58 deletions
diff --git a/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp b/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp index 9acb796212f..8d15d6362e0 100644 --- a/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp +++ b/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp @@ -6,6 +6,8 @@ #include "../common.h" #include <bgfx/bgfx.h> +#include <bgfx/embedded_shader.h> + #include <stddef.h> // offsetof #include <memory.h> // memcpy #include <wchar.h> // wcslen @@ -21,6 +23,18 @@ #include "vs_font_distance_field_subpixel.bin.h" #include "fs_font_distance_field_subpixel.bin.h" +static const bgfx::EmbeddedShader s_embeddedShaders[] = +{ + BGFX_EMBEDDED_SHADER(vs_font_basic), + BGFX_EMBEDDED_SHADER(fs_font_basic), + BGFX_EMBEDDED_SHADER(vs_font_distance_field), + BGFX_EMBEDDED_SHADER(fs_font_distance_field), + BGFX_EMBEDDED_SHADER(vs_font_distance_field_subpixel), + BGFX_EMBEDDED_SHADER(fs_font_distance_field_subpixel), + + BGFX_EMBEDDED_SHADER_END() +}; + #define MAX_BUFFERED_CHARACTERS (8192 - 5) class TextBuffer @@ -565,70 +579,25 @@ TextBufferManager::TextBufferManager(FontManager* _fontManager) { m_textBuffers = new BufferCache[MAX_TEXT_BUFFER_COUNT]; - const bgfx::Memory* vs_font_basic; - const bgfx::Memory* fs_font_basic; - const bgfx::Memory* vs_font_distance_field; - const bgfx::Memory* fs_font_distance_field; - const bgfx::Memory* vs_font_distance_field_subpixel; - const bgfx::Memory* fs_font_distance_field_subpixel; - - switch (bgfx::getRendererType() ) - { - case bgfx::RendererType::Direct3D9: - vs_font_basic = bgfx::makeRef(vs_font_basic_dx9, sizeof(vs_font_basic_dx9) ); - fs_font_basic = bgfx::makeRef(fs_font_basic_dx9, sizeof(fs_font_basic_dx9) ); - vs_font_distance_field = bgfx::makeRef(vs_font_distance_field_dx9, sizeof(vs_font_distance_field_dx9) ); - fs_font_distance_field = bgfx::makeRef(fs_font_distance_field_dx9, sizeof(fs_font_distance_field_dx9) ); - vs_font_distance_field_subpixel = bgfx::makeRef(vs_font_distance_field_subpixel_dx9, sizeof(vs_font_distance_field_subpixel_dx9) ); - fs_font_distance_field_subpixel = bgfx::makeRef(fs_font_distance_field_subpixel_dx9, sizeof(fs_font_distance_field_subpixel_dx9) ); - break; - - case bgfx::RendererType::Direct3D11: - case bgfx::RendererType::Direct3D12: - vs_font_basic = bgfx::makeRef(vs_font_basic_dx11, sizeof(vs_font_basic_dx11) ); - fs_font_basic = bgfx::makeRef(fs_font_basic_dx11, sizeof(fs_font_basic_dx11) ); - vs_font_distance_field = bgfx::makeRef(vs_font_distance_field_dx11, sizeof(vs_font_distance_field_dx11) ); - fs_font_distance_field = bgfx::makeRef(fs_font_distance_field_dx11, sizeof(fs_font_distance_field_dx11) ); - vs_font_distance_field_subpixel = bgfx::makeRef(vs_font_distance_field_subpixel_dx11, sizeof(vs_font_distance_field_subpixel_dx11) ); - fs_font_distance_field_subpixel = bgfx::makeRef(fs_font_distance_field_subpixel_dx11, sizeof(fs_font_distance_field_subpixel_dx11) ); - break; - - case bgfx::RendererType::Metal: - vs_font_basic = bgfx::makeRef(vs_font_basic_mtl, sizeof(vs_font_basic_mtl) ); - fs_font_basic = bgfx::makeRef(fs_font_basic_mtl, sizeof(fs_font_basic_mtl) ); - vs_font_distance_field = bgfx::makeRef(vs_font_distance_field_mtl, sizeof(vs_font_distance_field_mtl) ); - fs_font_distance_field = bgfx::makeRef(fs_font_distance_field_mtl, sizeof(fs_font_distance_field_mtl) ); - vs_font_distance_field_subpixel = bgfx::makeRef(vs_font_distance_field_subpixel_mtl, sizeof(vs_font_distance_field_subpixel_mtl) ); - fs_font_distance_field_subpixel = bgfx::makeRef(fs_font_distance_field_subpixel_mtl, sizeof(fs_font_distance_field_subpixel_mtl) ); - break; - - default: - vs_font_basic = bgfx::makeRef(vs_font_basic_glsl, sizeof(vs_font_basic_glsl) ); - fs_font_basic = bgfx::makeRef(fs_font_basic_glsl, sizeof(fs_font_basic_glsl) ); - vs_font_distance_field = bgfx::makeRef(vs_font_distance_field_glsl, sizeof(vs_font_distance_field_glsl) ); - fs_font_distance_field = bgfx::makeRef(fs_font_distance_field_glsl, sizeof(fs_font_distance_field_glsl) ); - vs_font_distance_field_subpixel = bgfx::makeRef(vs_font_distance_field_subpixel_glsl, sizeof(vs_font_distance_field_subpixel_glsl) ); - fs_font_distance_field_subpixel = bgfx::makeRef(fs_font_distance_field_subpixel_glsl, sizeof(fs_font_distance_field_subpixel_glsl) ); - break; - } + bgfx::RendererType::Enum type = bgfx::getRendererType(); m_basicProgram = bgfx::createProgram( - bgfx::createShader(vs_font_basic) - , bgfx::createShader(fs_font_basic) - , true - ); + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_basic") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_basic") + , true + ); m_distanceProgram = bgfx::createProgram( - bgfx::createShader(vs_font_distance_field) - , bgfx::createShader(fs_font_distance_field) - , true - ); + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_distance_field") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_distance_field") + , true + ); m_distanceSubpixelProgram = bgfx::createProgram( - bgfx::createShader(vs_font_distance_field_subpixel) - , bgfx::createShader(fs_font_distance_field_subpixel) - , true - ); + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_font_distance_field_subpixel") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_font_distance_field_subpixel") + , true + ); m_vertexDecl .begin() |