X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Funiform.cpp;h=8aba365be5e5cd2238a0934eb639d6585c453d8e;hb=8f7d5b6460ef68e7316c7f556b7152d9c9f7bfe2;hp=88c42d377067f73fbde380164b7acad458b6cdf7;hpb=85e83ace47e5a9a8ae7263886255dd81afc69278;p=libs%2Fgl.git diff --git a/source/uniform.cpp b/source/uniform.cpp index 88c42d37..8aba365b 100644 --- a/source/uniform.cpp +++ b/source/uniform.cpp @@ -1,72 +1,57 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include "arb_shader_objects.h" #include "uniform.h" namespace Msp { namespace GL { -Uniform1i::Uniform1i(int v_): - v(v_) -{ } - -void Uniform1i::apply(int index) const +template<> +void UniformScalar::apply(int index, unsigned size, const int *value) { - glUniform1iARB(index, v); + glUniform1iv(index, size, value); } - -Uniform1f::Uniform1f(float v_): - v(v_) -{ } - -void Uniform1f::apply(int index) const +template<> +void UniformScalar::apply(int index, unsigned size, const float *value) { - glUniform1fARB(index, v); + glUniform1fv(index, size, value); } -Uniform2f::Uniform2f(float v0, float v1) +template<> +void UniformVector::apply(int index, unsigned size, const float *value) { - v[0]=v0; - v[1]=v1; + glUniform2fv(index, size, value); } -void Uniform2f::apply(int index) const +template<> +void UniformVector::apply(int index, unsigned size, const float *value) { - glUniform2fvARB(index, 1, v); + glUniform3fv(index, size, value); } - -Uniform3f::Uniform3f(float v0, float v1, float v2) +template<> +void UniformVector::apply(int index, unsigned size, const float *value) { - v[0]=v0; - v[1]=v1; - v[2]=v2; + glUniform4fv(index, size, value); } -void Uniform3f::apply(int index) const + +template<> +void UniformMatrix::apply(int index, unsigned size, const float *value) { - glUniform3fvARB(index, 1, v); + glUniformMatrix2fv(index, size, false, value); } - -Uniform4f::Uniform4f(float v0, float v1, float v2, float v3) +template<> +void UniformMatrix::apply(int index, unsigned size, const float *value) { - v[0]=v0; - v[1]=v1; - v[2]=v2; - v[3]=v3; + glUniformMatrix2fv(index, size, false, value); } -void Uniform4f::apply(int index) const +template<> +void UniformMatrix::apply(int index, unsigned size, const float *value) { - glUniform4fvARB(index, 1, v); + glUniformMatrix4fv(index, size, false, value); } } // namespace GL