diff options
Diffstat (limited to 'src/graphics/sprite.c')
-rw-r--r-- | src/graphics/sprite.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/graphics/sprite.c b/src/graphics/sprite.c index 231b554..2aecdd1 100644 --- a/src/graphics/sprite.c +++ b/src/graphics/sprite.c @@ -26,20 +26,27 @@ void mgl_sprite_draw(mgl_context *context, mgl_sprite *sprite) { if(!sprite->texture) return; + float texture_right = 1.0f; + float texture_bottom = 1.0f; + if(sprite->texture->pixel_coordinates) { + texture_right = sprite->texture->width; + texture_bottom = sprite->texture->height; + } + context->gl.glColor4ub(sprite->color.r, sprite->color.g, sprite->color.b, sprite->color.a); - context->gl.glBindTexture(GL_TEXTURE_2D, sprite->texture->id); + mgl_texture_use(sprite->texture); context->gl.glBegin(GL_QUADS); context->gl.glTexCoord2f(0.0f, 0.0f); context->gl.glVertex3f(sprite->position.x, sprite->position.y, 0.0f); - context->gl.glTexCoord2f(1.0f, 0.0f); + context->gl.glTexCoord2f(texture_right, 0.0f); context->gl.glVertex3f(sprite->position.x + sprite->texture->width * sprite->scale.x, sprite->position.y, 0.0f); - context->gl.glTexCoord2f(1.0f, 1.0f); + context->gl.glTexCoord2f(texture_right, texture_bottom); context->gl.glVertex3f(sprite->position.x + sprite->texture->width * sprite->scale.x, sprite->position.y + sprite->texture->height * sprite->scale.y, 0.0f); - context->gl.glTexCoord2f(0.0f, 1.0f); + context->gl.glTexCoord2f(0.0f, texture_bottom); context->gl.glVertex3f(sprite->position.x, sprite->position.y + sprite->texture->height * sprite->scale.y, 0.0f); context->gl.glEnd(); - context->gl.glBindTexture(GL_TEXTURE_2D, 0); + mgl_texture_use(NULL); } |