From 7a80f0de04c3b07d88ba2ab3e51544d38fe924f6 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 21 Aug 2022 21:57:31 +0200 Subject: Attempt to fix vertex draw when using texcoords without a texture (such as when using a shader) --- src/graphics/texture.c | 7 +++++++ src/graphics/vertex.c | 10 +++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/graphics/texture.c b/src/graphics/texture.c index 7d8fdcf..fb8c1e5 100644 --- a/src/graphics/texture.c +++ b/src/graphics/texture.c @@ -5,6 +5,8 @@ /* TODO: Check for glTexImage2D/glTexSubImage2D failure */ +static const mgl_texture *current_texture = NULL; + static int mgl_texture_format_to_opengl_format(mgl_texture_format format) { switch(format) { case MGL_TEXTURE_FORMAT_ALPHA: return GL_ALPHA8; @@ -153,6 +155,7 @@ int mgl_texture_resize(mgl_texture *self, int new_width, int new_height, mgl_tex void mgl_texture_use(const mgl_texture *texture) { mgl_context *context = mgl_get_context(); + current_texture = texture; if(texture) { float matrix[16] = { 1.0f, 0.0f, 0.0f, 0.0f, @@ -176,6 +179,10 @@ void mgl_texture_use(const mgl_texture *texture) { } } +const mgl_texture* mgl_texture_current_texture(void) { + return current_texture; +} + void mgl_texture_unload(mgl_texture *self) { mgl_context *context = mgl_get_context(); if(self->id) { diff --git a/src/graphics/vertex.c b/src/graphics/vertex.c index b45f38c..e55c180 100644 --- a/src/graphics/vertex.c +++ b/src/graphics/vertex.c @@ -1,4 +1,5 @@ #include "../../include/mgl/graphics/vertex.h" +#include "../../include/mgl/graphics/texture.h" #include "../../include/mgl/mgl.h" void mgl_vertices_draw(mgl_context *context, const mgl_vertex *vertices, size_t vertex_count, mgl_primitive_type primitive_type, mgl_vec2f position) { @@ -6,11 +7,14 @@ void mgl_vertices_draw(mgl_context *context, const mgl_vertex *vertices, size_t return; context->gl.glPushMatrix(); - context->gl.glTranslatef(position.x, position.y, 0.0f); - context->gl.glMatrixMode(GL_TEXTURE); - context->gl.glLoadIdentity(); + if(!mgl_texture_current_texture()) { + context->gl.glMatrixMode(GL_TEXTURE); + context->gl.glLoadIdentity(); + } + context->gl.glMatrixMode(GL_MODELVIEW); + context->gl.glTranslatef(position.x, position.y, 0.0f); context->gl.glVertexPointer(2, GL_FLOAT, sizeof(mgl_vertex), (void*)&vertices[0].position); context->gl.glTexCoordPointer(2, GL_FLOAT, sizeof(mgl_vertex), (void*)&vertices[0].texcoords); -- cgit v1.2.3