summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/uniform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/bgfx/uniform.cpp')
-rw-r--r--src/osd/modules/render/bgfx/uniform.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/osd/modules/render/bgfx/uniform.cpp b/src/osd/modules/render/bgfx/uniform.cpp
index ef33c11f128..238a6a4315d 100644
--- a/src/osd/modules/render/bgfx/uniform.cpp
+++ b/src/osd/modules/render/bgfx/uniform.cpp
@@ -7,13 +7,15 @@
//============================================================
#include "uniform.h"
+
#include <cstring>
+#include <utility>
-bgfx_uniform::bgfx_uniform(std::string name, bgfx::UniformType::Enum type)
- : m_name(name)
+bgfx_uniform::bgfx_uniform(std::string &&name, bgfx::UniformType::Enum type)
+ : m_name(std::move(name))
, m_type(type)
{
- m_handle = bgfx::createUniform(m_name.c_str(), m_type);
+ m_handle = BGFX_INVALID_HANDLE;
m_data_size = get_size_for_type(type);
if (m_data_size > 0)
{
@@ -23,13 +25,21 @@ bgfx_uniform::bgfx_uniform(std::string name, bgfx::UniformType::Enum type)
bgfx_uniform::~bgfx_uniform()
{
- bgfx::destroy(m_handle);
+ if (m_handle.idx != bgfx::kInvalidHandle)
+ {
+ bgfx::destroy(m_handle);
+ }
delete [] m_data;
}
+void bgfx_uniform::create()
+{
+ m_handle = bgfx::createUniform(m_name.c_str(), m_type);
+}
+
void bgfx_uniform::upload()
{
- if (m_type != bgfx::UniformType::Int1)
+ if (m_type != bgfx::UniformType::Sampler)
{
bgfx::setUniform(m_handle, m_data);
}
@@ -42,7 +52,7 @@ bgfx_uniform* bgfx_uniform::set(float* value)
bgfx_uniform* bgfx_uniform::set_int(int value)
{
- return set(&value, get_size_for_type(bgfx::UniformType::Int1));
+ return set(&value, get_size_for_type(bgfx::UniformType::Sampler));
}
bgfx_uniform* bgfx_uniform::set_mat3(float* value)
@@ -69,7 +79,7 @@ size_t bgfx_uniform::get_size_for_type(bgfx::UniformType::Enum type)
case bgfx::UniformType::Vec4:
return sizeof(float) * 4;
- case bgfx::UniformType::Int1:
+ case bgfx::UniformType::Sampler:
return sizeof(int);
case bgfx::UniformType::Mat3: