aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/shaders/je_shader.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-01-06 23:33:08 +0800
committerchai <chaifix@163.com>2019-01-06 23:33:08 +0800
commitda056982e50bdd9cb9f944691cc88ca98b053b77 (patch)
tree490842e50d98f48affd38ff23f5bb7fda1937a7f /src/libjin/graphics/shaders/je_shader.cpp
parentc446e8186afa31c8d346383c0db8b8070fa563cd (diff)
*misc
Diffstat (limited to 'src/libjin/graphics/shaders/je_shader.cpp')
-rw-r--r--src/libjin/graphics/shaders/je_shader.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp
index 059c411..0803e65 100644
--- a/src/libjin/graphics/shaders/je_shader.cpp
+++ b/src/libjin/graphics/shaders/je_shader.cpp
@@ -58,7 +58,8 @@ namespace JinEngine
//
const int DEFAULT_TEXTURE_UNIT = 0;
- GLint Shader::mTextureUnit = DEFAULT_TEXTURE_UNIT;
+ static GLint textureUnit = 0;
+
GLint Shader::mAttributeIndex = 0;
Shader::Shader(const string& program)
@@ -79,8 +80,11 @@ namespace JinEngine
glDeleteShader(mPID);
}
- Shader& Shader::prepare()
+ Shader& Shader::begin()
{
+
+ textureUnit = DEFAULT_TEXTURE_UNIT;
+
// Send uniforms.
sendInt(SHADER_MAIN_TEXTURE, DEFAULT_TEXTURE_UNIT);
sendVec2(SHADER_TIME, Time::getSecond(), Time::getDeltaTime());
@@ -93,15 +97,17 @@ namespace JinEngine
{
sendVec2(SHADER_RENDERTARGET_SIZE, rt->getWidth(), rt->getHeight());
}
- // Reset attribute index.
- for(; mAttributeIndex > 0; --mAttributeIndex)
- glDisableVertexAttribArray(mAttributeIndex);
-
- mTextureUnit = DEFAULT_TEXTURE_UNIT;
return *this;
}
+ void Shader::end()
+ {
+ // Reset attribute index.
+ for (; mAttributeIndex > 0; --mAttributeIndex)
+ glDisableVertexAttribArray(mAttributeIndex);
+ }
+
bool Shader::compile(const string& program)
{
string vertex_shader, fragment_shader;
@@ -159,7 +165,7 @@ namespace JinEngine
// return 0;
//mTextureUnits[name] = mCurrentTextureUnit;
//return mCurrentTextureUnit;
- return mTextureUnit++;
+ return textureUnit++;
}
GLint Shader::getUniformLocation(const char* uniform)