aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics')
-rw-r--r--src/libjin/Graphics/Drawable.cpp4
-rw-r--r--src/libjin/Graphics/Shader.cpp3
-rw-r--r--src/libjin/Graphics/base.shader.h2
3 files changed, 6 insertions, 3 deletions
diff --git a/src/libjin/Graphics/Drawable.cpp b/src/libjin/Graphics/Drawable.cpp
index d4fd1ad..53b4f85 100644
--- a/src/libjin/Graphics/Drawable.cpp
+++ b/src/libjin/Graphics/Drawable.cpp
@@ -12,8 +12,8 @@ namespace graphics
Drawable::Drawable(int w, int h)
: texture(0)
- , size()
- , anchor()
+ , size(w, h)
+ , anchor(0, 0)
{
}
diff --git a/src/libjin/Graphics/Shader.cpp b/src/libjin/Graphics/Shader.cpp
index 45ad3d6..1af861f 100644
--- a/src/libjin/Graphics/Shader.cpp
+++ b/src/libjin/Graphics/Shader.cpp
@@ -45,7 +45,7 @@ namespace graphics
JSLProgram::JSLProgram(const char* program)
: currentTextureUnit(DEFAULT_TEX_UNIT)
{
- char* fs = (char*)alloca(strlen(program) + strlen(base_shader));
+ char* fs = (char*)calloc(1, strlen(program) + base_size);
formatShader(fs, program);
GLuint shader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(shader, 1, (const GLchar**)&fs, NULL);
@@ -53,6 +53,7 @@ namespace graphics
pid = glCreateProgram();
glAttachShader(pid, shader);
glLinkProgram(pid);
+ free(fs);
}
JSLProgram::~JSLProgram()
diff --git a/src/libjin/Graphics/base.shader.h b/src/libjin/Graphics/base.shader.h
index 109d791..0b8eca9 100644
--- a/src/libjin/Graphics/base.shader.h
+++ b/src/libjin/Graphics/base.shader.h
@@ -23,6 +23,8 @@ void main()
)";
#define formatShader(buf, program)\
sprintf(buf, base_shader, default_tex, program, default_tex)
+
+#define base_size (strlen(base_shader) + strlen(default_tex)*2)
/*
* https://stackoverflow.com/questions/10868958/what-does-sampler2d-store
* The sampler2D is bound to a texture unit. The glUniform call binds it to texture