X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Funiform.cpp;fp=source%2Funiform.cpp;h=688052ff16d0ae3b8fdebc5fafe99e1025c118d9;hp=af49c047f71be82f5c635a66560a40d7f27d549d;hb=f9c15dc04462b2f1eea1d6bdd71e3ba967b1bd8c;hpb=86af62e6f5a743a08c04dde873f51802af5982c4 diff --git a/source/uniform.cpp b/source/uniform.cpp index af49c047..688052ff 100644 --- a/source/uniform.cpp +++ b/source/uniform.cpp @@ -1,107 +1,45 @@ -#include #include "arb_shader_objects.h" #include "uniform.h" namespace Msp { namespace GL { -Uniform1i::Uniform1i(int v_): - v(v_) -{ } - -void Uniform1i::apply(int index) const -{ - glUniform1iARB(index, v); -} - -Uniform1i *Uniform1i::clone() const -{ - return new Uniform1i(v); -} - - -Uniform1f::Uniform1f(float v_): - v(v_) -{ } - -void Uniform1f::apply(int index) const +template<> +void UniformScalar::apply(int index) const { - glUniform1fARB(index, v); + glUniform1iARB(index, value); } -Uniform1f *Uniform1f::clone() const +template<> +void UniformScalar::apply(int index) const { - return new Uniform1f(v); + glUniform1fARB(index, value); } -Uniform2f::Uniform2f(float v0, float v1) +template<> +void UniformVector::apply(int index) const { - v[0] = v0; - v[1] = v1; + glUniform2fvARB(index, 1, value); } -void Uniform2f::apply(int index) const +template<> +void UniformVector::apply(int index) const { - glUniform2fvARB(index, 1, v); + glUniform3fvARB(index, 1, value); } -Uniform2f *Uniform2f::clone() const +template<> +void UniformVector::apply(int index) const { - return new Uniform2f(v[0], v[1]); + glUniform4fvARB(index, 1, value); } -Uniform3f::Uniform3f(float v0, float v1, float v2) -{ - v[0] = v0; - v[1] = v1; - v[2] = v2; -} - -void Uniform3f::apply(int index) const -{ - glUniform3fvARB(index, 1, v); -} - -Uniform3f *Uniform3f::clone() const -{ - return new Uniform3f(v[0], v[1], v[2]); -} - - -Uniform4f::Uniform4f(float v0, float v1, float v2, float v3) -{ - v[0] = v0; - v[1] = v1; - v[2] = v2; - v[3] = v3; -} - -void Uniform4f::apply(int index) const -{ - glUniform4fvARB(index, 1, v); -} - -Uniform4f *Uniform4f::clone() const -{ - return new Uniform4f(v[0], v[1], v[2], v[3]); -} - - -UniformMatrix4x4f::UniformMatrix4x4f(const float *vp) -{ - std::copy(vp, vp+16, v); -} - -void UniformMatrix4x4f::apply(int index) const -{ - glUniformMatrix4fvARB(index, 1, false, v); -} - -UniformMatrix4x4f *UniformMatrix4x4f::clone() const +template<> +void UniformMatrix::apply(int index) const { - return new UniformMatrix4x4f(v); + glUniformMatrix4fvARB(index, 1, false, value); } } // namespace GL