diff nuklear_ui/blastem_nuklear.c @ 1658:fa9ae059e4d3

Added support for GLES in addition to desktop GL
author Mike Pavone <pavone@retrodev.com>
date Sun, 30 Dec 2018 21:10:44 -0800
parents 5a662692c215
children c6cc2dae262f
line wrap: on
line diff
--- a/nuklear_ui/blastem_nuklear.c	Sun Dec 30 19:40:32 2018 -0800
+++ b/nuklear_ui/blastem_nuklear.c	Sun Dec 30 21:10:44 2018 -0800
@@ -1789,10 +1789,12 @@
 
 void blastem_nuklear_render(void)
 {
-	nk_input_end(context);
-	current_view(context);
-	nk_sdl_render(NK_ANTI_ALIASING_ON, 512 * 1024, 128 * 1024);
-	nk_input_begin(context);
+	if (current_view != view_play) {
+		nk_input_end(context);
+		current_view(context);
+		nk_sdl_render(NK_ANTI_ALIASING_ON, 512 * 1024, 128 * 1024);
+		nk_input_begin(context);
+	}
 }
 
 void ui_idle_loop(void)
@@ -1849,7 +1851,11 @@
 	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
 	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+#ifdef USE_GLES
+	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);
+#else
 	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, buf);
+#endif
 	return nk_image_id((int)tex);
 }
 
@@ -1929,6 +1935,14 @@
 		}
 		ui_image *this_image = ui_images[num_ui_images-1] = calloc(1, sizeof(ui_image));
 		this_image->image_data = load_png(buf, buf_size, &this_image->width, &this_image->height);
+#ifdef USE_GLES
+		uint32_t *cur = this_image->image_data;
+		for (int i = 0; i < this_image->width*this_image->height; i++, cur++)
+		{
+			uint32_t pixel = *cur;
+			*cur = (pixel & 0xFF00FF00) | (pixel << 16 & 0xFF0000) | (pixel >> 16 & 0xFF);
+		}
+#endif
 		free(buf);
 		if (!this_image->image_data) {
 			num_ui_images--;