diff options
author | 2015-09-12 10:23:53 +0200 | |
---|---|---|
committer | 2015-09-12 10:23:53 +0200 | |
commit | 7ca8f88a5c399317265d9a2f5132eab2ab7723ac (patch) | |
tree | cf7af75fb307bd040508c4c2455d3bd6755619f4 /3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp | |
parent | 6d06509293e2fe6b1743085471f0ff5268a1b351 (diff) |
Added latest 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 | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp b/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp index f3dd51342db..d42e0cb8d40 100644 --- a/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp +++ b/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp @@ -584,6 +584,15 @@ TextBufferManager::TextBufferManager(FontManager* _fontManager) 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) ); @@ -619,7 +628,7 @@ TextBufferManager::TextBufferManager(FontManager* _fontManager) .add(bgfx::Attrib::Color0, 4, bgfx::AttribType::Uint8, true) .end(); - u_texColor = bgfx::createUniform("u_texColor", bgfx::UniformType::Uniform1iv); + s_texColor = bgfx::createUniform("s_texColor", bgfx::UniformType::Int1); } TextBufferManager::~TextBufferManager() @@ -627,7 +636,7 @@ TextBufferManager::~TextBufferManager() BX_CHECK(m_textBufferHandles.getNumHandles() == 0, "All the text buffers must be destroyed before destroying the manager"); delete [] m_textBuffers; - bgfx::destroyUniform(u_texColor); + bgfx::destroyUniform(s_texColor); bgfx::destroyProgram(m_basicProgram); bgfx::destroyProgram(m_distanceProgram); @@ -706,12 +715,13 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id, return; } - bgfx::setTexture(0, u_texColor, m_fontManager->getAtlas()->getTextureHandle() ); + bgfx::setTexture(0, s_texColor, m_fontManager->getAtlas()->getTextureHandle() ); + bgfx::ProgramHandle program = BGFX_INVALID_HANDLE; switch (bc.fontType) { case FONT_TYPE_ALPHA: - bgfx::setProgram(m_basicProgram); + program = m_basicProgram; bgfx::setState(0 | BGFX_STATE_RGB_WRITE | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) @@ -719,7 +729,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id, break; case FONT_TYPE_DISTANCE: - bgfx::setProgram(m_distanceProgram); + program = m_distanceProgram; bgfx::setState(0 | BGFX_STATE_RGB_WRITE | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA) @@ -727,7 +737,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id, break; case FONT_TYPE_DISTANCE_SUBPIXEL: - bgfx::setProgram(m_distanceSubpixelProgram); + program = m_distanceSubpixelProgram; bgfx::setState(0 | BGFX_STATE_RGB_WRITE | BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_FACTOR, BGFX_STATE_BLEND_INV_SRC_COLOR) @@ -764,7 +774,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id, } bgfx::setVertexBuffer(vbh, 0, bc.textBuffer->getVertexCount() ); - bgfx::setIndexBuffer(ibh, bc.textBuffer->getIndexCount() ); + bgfx::setIndexBuffer(ibh, 0, bc.textBuffer->getIndexCount() ); } break; @@ -793,10 +803,12 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id, vbh.idx = bc.vertexBufferHandleIdx; bgfx::updateDynamicIndexBuffer(ibh + , 0 , bgfx::copy(bc.textBuffer->getIndexBuffer(), indexSize) ); bgfx::updateDynamicVertexBuffer(vbh + , 0 , bgfx::copy(bc.textBuffer->getVertexBuffer(), vertexSize) ); } @@ -820,7 +832,7 @@ void TextBufferManager::submitTextBuffer(TextBufferHandle _handle, uint8_t _id, break; } - bgfx::submit(_id, _depth); + bgfx::submit(_id, program, _depth); } void TextBufferManager::setStyle(TextBufferHandle _handle, uint32_t _flags) |