ref: 53c0e8470fa7cb0893d30bc1f19640e34ca7d0c2
parent: dfacd626622d57ef924f394f6378fdfb437e0959
author: Clownacy <Clownacy@users.noreply.github.com>
date: Mon Feb 3 10:53:59 EST 2020
Add an optimisation to the OpenGL renderers Since we track the currently-bound "source texture", we don't need to poll the OpenGL driver for the same info.
--- a/src/Backends/Rendering/OpenGL3.cpp
+++ b/src/Backends/Rendering/OpenGL3.cpp
@@ -479,9 +479,6 @@
{
(void)udata;
- GLint previously_bound_texture;
- glGetIntegerv(GL_TEXTURE_BINDING_2D, &previously_bound_texture);
-
GLuint texture_id;
glGenTextures(1, &texture_id);
glBindTexture(GL_TEXTURE_2D, texture_id);
@@ -499,7 +496,7 @@
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
#endif
- glBindTexture(GL_TEXTURE_2D, previously_bound_texture);
+ glBindTexture(GL_TEXTURE_2D, last_source_texture);
return (SPRITEBATCH_U64)texture_id;
}
@@ -796,9 +793,6 @@
if (surface == NULL)
return NULL;
- GLint previously_bound_texture;
- glGetIntegerv(GL_TEXTURE_BINDING_2D, &previously_bound_texture);
-
glGenTextures(1, &surface->texture_id);
glBindTexture(GL_TEXTURE_2D, surface->texture_id);
#ifdef USE_OPENGLES2
@@ -814,7 +808,7 @@
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
#endif
- glBindTexture(GL_TEXTURE_2D, previously_bound_texture);
+ glBindTexture(GL_TEXTURE_2D, last_source_texture);
surface->width = width;
surface->height = height;
@@ -866,14 +860,11 @@
if (surface->texture_id == last_source_texture || surface->texture_id == last_destination_texture)
FlushVertexBuffer();
- GLint previously_bound_texture;
- glGetIntegerv(GL_TEXTURE_BINDING_2D, &previously_bound_texture);
-
glBindTexture(GL_TEXTURE_2D, surface->texture_id);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, surface->pixels);
free(surface->pixels);
- glBindTexture(GL_TEXTURE_2D, previously_bound_texture);
+ glBindTexture(GL_TEXTURE_2D, last_source_texture);
}
// ====================
--
⑨