diff options
Diffstat (limited to 'src/libjin/Graphics')
-rw-r--r-- | src/libjin/Graphics/Drawable.cpp | 4 | ||||
-rw-r--r-- | src/libjin/Graphics/Shader.cpp | 3 | ||||
-rw-r--r-- | src/libjin/Graphics/base.shader.h | 2 |
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 |