shithub: cstory

Download patch

ref: 5c6b71e3a1b2f09155ea04263c268e3279e5c943
parent: b8ceefcefd5dadf3c360347629ed4c472d4f5f94
author: Clownacy <Clownacy@users.noreply.github.com>
date: Thu Sep 17 14:15:24 EDT 2020

Optimise a little when using OpenGL3

--- a/src/Backends/Rendering/OpenGL3.cpp
+++ b/src/Backends/Rendering/OpenGL3.cpp
@@ -933,25 +933,34 @@
 
 void RenderBackend_UploadGlyph(RenderBackend_GlyphAtlas *atlas, size_t x, size_t y, const unsigned char *pixels, size_t width, size_t height, size_t pitch)
 {
+#ifdef USE_OPENGLES2
 	unsigned char *buffer = (unsigned char*)malloc(width * height);
 
-	if (buffer != NULL)
-	{
-		for (size_t y = 0; y < height; ++y)
-			memcpy (&buffer[y * width], &pixels[y * pitch], width);
+	if (buffer == NULL)
+		return;
 
-		SetTextureUploadAlignment(width);
-		glBindTexture(GL_TEXTURE_2D, atlas->texture_id);
-	#ifdef USE_OPENGLES2
-		glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, width, height, GL_LUMINANCE, GL_UNSIGNED_BYTE, buffer);
-	#else
-		glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, width, height, GL_RED, GL_UNSIGNED_BYTE, buffer);
-	#endif
-		glBindTexture(GL_TEXTURE_2D, last_source_texture);
-		glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
+	for (size_t y = 0; y < height; ++y)
+		memcpy (&buffer[y * width], &pixels[y * pitch], width);
+#else
+	const unsigned char *buffer = pixels;
 
-		free(buffer);
-	}
+	glPixelStorei(GL_UNPACK_ROW_LENGTH, pitch);
+#endif
+
+	SetTextureUploadAlignment(width);
+	glBindTexture(GL_TEXTURE_2D, atlas->texture_id);
+#ifdef USE_OPENGLES2
+	glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, width, height, GL_LUMINANCE, GL_UNSIGNED_BYTE, buffer);
+#else
+	glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, width, height, GL_RED, GL_UNSIGNED_BYTE, buffer);
+#endif
+	glBindTexture(GL_TEXTURE_2D, last_source_texture);
+
+#ifdef USE_OPENGLES2
+	free(buffer);
+#else
+	glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+#endif
 }
 
 void RenderBackend_PrepareToDrawGlyphs(RenderBackend_GlyphAtlas *atlas, RenderBackend_Surface *destination_surface, unsigned char red, unsigned char green, unsigned char blue)