aboutsummaryrefslogtreecommitdiff
path: root/src/graphics/sprite.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/graphics/sprite.c')
-rw-r--r--src/graphics/sprite.c17
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);
}