3 This file is part of libmspgl
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
9 #include "programdata.h"
17 ProgramData::ProgramData()
19 require_extension("GL_ARB_shader_objects");
22 ProgramData::~ProgramData()
24 for(map<int, Uniform *>::iterator i=data.begin(); i!=data.end(); ++i)
28 void ProgramData::uniform(int index, Uniform *uni)
33 map<int, Uniform *>::iterator i=data.find(index);
43 void ProgramData::uniform(int index, int v)
45 uniform(index, new Uniform1i(v));
48 void ProgramData::uniform(int index, float v)
50 uniform(index, new Uniform1f(v));
53 void ProgramData::uniform(int index, float v0, float v1)
55 uniform(index, new Uniform2f(v0, v1));
58 void ProgramData::uniform2(int index, const float *v)
60 uniform(index, v[0], v[1]);
63 void ProgramData::uniform(int index, float v0, float v1, float v2)
65 uniform(index, new Uniform3f(v0, v1, v2));
68 void ProgramData::uniform3(int index, const float *v)
70 uniform(index, v[0], v[1], v[2]);
73 void ProgramData::uniform(int index, float v0, float v1, float v2, float v3)
75 uniform(index, new Uniform4f(v0, v1, v2, v3));
78 void ProgramData::uniform4(int index, const float *v)
80 uniform(index, v[0], v[1], v[2], v[3]);
83 void ProgramData::apply() const
85 for(map<int, Uniform *>::const_iterator i=data.begin(); i!=data.end(); ++i)
86 i->second->apply(i->first);