From 728f4a1b18dc19a49a5c01149905eca1f49c4461 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sat, 31 Mar 2012 22:44:37 +0200 Subject: [PATCH] gl: add stride parameter to texture upload Allow to specify the stride when uploading data into a texture. Signed-off-by: David Herrmann --- src/font_freetype.c | 2 +- src/gl.h | 2 +- src/gl_shader.c | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/font_freetype.c b/src/font_freetype.c index 8bf7e91..dd8aafa 100644 --- a/src/font_freetype.c +++ b/src/font_freetype.c @@ -133,7 +133,7 @@ static int kmscon_glyph_new(struct kmscon_glyph **out, kmscon_symbol_t key, } } - gl_tex_load(glyph->tex, bmap->width, bmap->rows, data); + gl_tex_load(glyph->tex, bmap->width, 0, bmap->rows, data); free(data); glyph->width = bmap->width; diff --git a/src/gl.h b/src/gl.h index bd079bb..d5bc7dd 100644 --- a/src/gl.h +++ b/src/gl.h @@ -73,7 +73,7 @@ float *gl_m4_stack_tip(struct gl_m4_stack *stack); unsigned int gl_tex_new(); void gl_tex_free(unsigned int tex); -void gl_tex_load(unsigned int tex, unsigned int width, +void gl_tex_load(unsigned int tex, unsigned int width, unsigned int stride, unsigned int height, void *buf); /* diff --git a/src/gl_shader.c b/src/gl_shader.c index 8bb319a..c3b3105 100644 --- a/src/gl_shader.c +++ b/src/gl_shader.c @@ -98,7 +98,7 @@ void gl_tex_free(unsigned int tex) glDeleteTextures(1, &tex); } -void gl_tex_load(unsigned int tex, unsigned int width, +void gl_tex_load(unsigned int tex, unsigned int width, unsigned int stride, unsigned int height, void *buf) { if (!buf || !width || !height) @@ -110,8 +110,10 @@ void gl_tex_load(unsigned int tex, unsigned int width, */ glBindTexture(GL_TEXTURE_2D, tex); + glPixelStorei(GL_UNPACK_ROW_LENGTH, stride); glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, width, height, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, buf); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); } struct gl_shader {