summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-09-12 10:23:53 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2015-09-12 10:23:53 +0200
commit7ca8f88a5c399317265d9a2f5132eab2ab7723ac (patch)
treecf7af75fb307bd040508c4c2455d3bd6755619f4 /3rdparty/bgfx/examples/common/font/text_buffer_manager.cpp
parent6d06509293e2fe6b1743085471f0ff5268a1b351 (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.cpp28
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)