summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/slideruniform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/bgfx/slideruniform.cpp')
-rw-r--r--src/osd/modules/render/bgfx/slideruniform.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/osd/modules/render/bgfx/slideruniform.cpp b/src/osd/modules/render/bgfx/slideruniform.cpp
new file mode 100644
index 00000000000..b79d5e1bb75
--- /dev/null
+++ b/src/osd/modules/render/bgfx/slideruniform.cpp
@@ -0,0 +1,34 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+//============================================================
+//
+// slideruniform.cpp - BGFX shader chain slider uniform
+//
+// Represents the mapping between a slider and a chain
+// shader uniform for a given entry
+//
+//============================================================
+
+#include "slideruniform.h"
+
+#include "slider.h"
+
+bgfx_slider_uniform::bgfx_slider_uniform(bgfx_uniform* uniform, std::vector<bgfx_slider*> sliders)
+ : bgfx_entry_uniform(uniform)
+{
+ for (bgfx_slider* slider : sliders)
+ {
+ m_sliders.push_back(slider);
+ }
+}
+
+void bgfx_slider_uniform::bind()
+{
+ float values[4];
+ for (uint32_t i = 0; i < m_sliders.size(); i++)
+ {
+ values[i] = m_sliders[i]->uniform_value();
+ }
+ printf("Setting slider uniform %s to %f, %f, %f, %f (%s)\n", m_uniform->name().c_str(), values[0], values[1], values[2], values[3], m_sliders[0]->name().c_str());
+ m_uniform->set(values, sizeof(float) * m_sliders.size());
+}