mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-17 18:01:13 +00:00
94 lines
1.5 KiB
C
94 lines
1.5 KiB
C
|
#pragma once
|
||
|
|
||
|
class FBufferedUniform1f
|
||
|
{
|
||
|
float mBuffer;
|
||
|
int mIndex;
|
||
|
|
||
|
public:
|
||
|
void Init(GLuint hShader, const GLchar *name)
|
||
|
{
|
||
|
mIndex = glGetUniformLocation(hShader, name);
|
||
|
mBuffer = 0;
|
||
|
}
|
||
|
|
||
|
void Set(float newvalue)
|
||
|
{
|
||
|
if (newvalue != mBuffer)
|
||
|
{
|
||
|
mBuffer = newvalue;
|
||
|
glUniform1f(mIndex, newvalue);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
class FBufferedUniform2f
|
||
|
{
|
||
|
float mBuffer[2];
|
||
|
int mIndex;
|
||
|
|
||
|
public:
|
||
|
void Init(GLuint hShader, const GLchar *name)
|
||
|
{
|
||
|
mIndex = glGetUniformLocation(hShader, name);
|
||
|
memset(mBuffer, 0, sizeof(mBuffer));
|
||
|
}
|
||
|
|
||
|
void Set(const float *newvalue)
|
||
|
{
|
||
|
if (memcmp(newvalue, mBuffer, sizeof(mBuffer)))
|
||
|
{
|
||
|
memcpy(mBuffer, newvalue, sizeof(mBuffer));
|
||
|
glUniform2fv(mIndex, 1, newvalue);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Set(float f1, float f2)
|
||
|
{
|
||
|
if (mBuffer[0] != f1 || mBuffer[1] != f2)
|
||
|
{
|
||
|
mBuffer[0] = f1;
|
||
|
mBuffer[1] = f2;
|
||
|
glUniform2fv(mIndex, 1, mBuffer);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
class FBufferedUniform4f
|
||
|
{
|
||
|
float mBuffer[4];
|
||
|
int mIndex;
|
||
|
|
||
|
public:
|
||
|
void Init(GLuint hShader, const GLchar *name)
|
||
|
{
|
||
|
mIndex = glGetUniformLocation(hShader, name);
|
||
|
memset(mBuffer, 0, sizeof(mBuffer));
|
||
|
}
|
||
|
|
||
|
void Set(const float *newvalue)
|
||
|
{
|
||
|
if (memcmp(newvalue, mBuffer, sizeof(mBuffer)))
|
||
|
{
|
||
|
memcpy(mBuffer, newvalue, sizeof(mBuffer));
|
||
|
glUniform4fv(mIndex, 1, newvalue);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
class FUniformMatrix4f
|
||
|
{
|
||
|
int mIndex;
|
||
|
|
||
|
public:
|
||
|
void Init(GLuint hShader, const GLchar *name)
|
||
|
{
|
||
|
mIndex = glGetUniformLocation(hShader, name);
|
||
|
}
|
||
|
|
||
|
void Set(const float *newvalue)
|
||
|
{
|
||
|
glUniformMatrix4fv(mIndex, 1, false, newvalue);
|
||
|
}
|
||
|
};
|