Add Vec2ShaderParameter class for vec2 glsl type

new-stars-v2
Hleb Valoshka 2021-03-13 00:35:33 +02:00
parent f16c355d11
commit 74bbe9fd1c
4 changed files with 37 additions and 0 deletions

View File

@ -87,6 +87,24 @@ FloatShaderParameter::operator=(float f)
}
Vec2ShaderParameter::Vec2ShaderParameter() :
slot(-1)
{
}
Vec2ShaderParameter::Vec2ShaderParameter(GLuint obj, const char* name)
{
slot = glGetUniformLocation(obj, name);
}
Vec2ShaderParameter&
Vec2ShaderParameter::operator=(const Eigen::Vector2f& v)
{
if (slot != -1)
glUniform2fv(slot, 1, v.data());
return *this;
}
Vec3ShaderParameter::Vec3ShaderParameter() :
slot(-1)
{

View File

@ -98,6 +98,18 @@ class FloatShaderParameter
};
class Vec2ShaderParameter
{
public:
Vec2ShaderParameter();
Vec2ShaderParameter(GLuint obj, const char* name);
Vec2ShaderParameter& operator=(const Eigen::Vector2f&);
private:
int slot;
};
class Vec3ShaderParameter
{
public:

View File

@ -3495,6 +3495,12 @@ CelestiaGLProgram::samplerParam(const string& paramName)
}
Vec2ShaderParameter
CelestiaGLProgram::vec2Param(const string& paramName)
{
return Vec2ShaderParameter(program->getID(), paramName.c_str());
}
Vec3ShaderParameter
CelestiaGLProgram::vec3Param(const string& paramName)
{

View File

@ -278,6 +278,7 @@ class CelestiaGLProgram
FloatShaderParameter floatParam(const std::string&);
IntegerShaderParameter intParam(const std::string&);
IntegerShaderParameter samplerParam(const std::string&);
Vec2ShaderParameter vec2Param(const std::string&);
Vec3ShaderParameter vec3Param(const std::string&);
Vec4ShaderParameter vec4Param(const std::string&);
Mat3ShaderParameter mat3Param(const std::string&);