comparison 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
comparison
equal deleted inserted replaced
1657:774096402918 1658:fa9ae059e4d3
1787 } 1787 }
1788 } 1788 }
1789 1789
1790 void blastem_nuklear_render(void) 1790 void blastem_nuklear_render(void)
1791 { 1791 {
1792 nk_input_end(context); 1792 if (current_view != view_play) {
1793 current_view(context); 1793 nk_input_end(context);
1794 nk_sdl_render(NK_ANTI_ALIASING_ON, 512 * 1024, 128 * 1024); 1794 current_view(context);
1795 nk_input_begin(context); 1795 nk_sdl_render(NK_ANTI_ALIASING_ON, 512 * 1024, 128 * 1024);
1796 nk_input_begin(context);
1797 }
1796 } 1798 }
1797 1799
1798 void ui_idle_loop(void) 1800 void ui_idle_loop(void)
1799 { 1801 {
1800 const uint32_t MIN_UI_DELAY = 15; 1802 const uint32_t MIN_UI_DELAY = 15;
1847 glBindTexture(GL_TEXTURE_2D, tex); 1849 glBindTexture(GL_TEXTURE_2D, tex);
1848 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 1850 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
1849 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 1851 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
1850 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 1852 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
1851 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 1853 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
1854 #ifdef USE_GLES
1855 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);
1856 #else
1852 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, buf); 1857 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, buf);
1858 #endif
1853 return nk_image_id((int)tex); 1859 return nk_image_id((int)tex);
1854 } 1860 }
1855 1861
1856 static void texture_init(void) 1862 static void texture_init(void)
1857 { 1863 {
1927 ui_image_storage = (ui_image_storage + 1) * 2; 1933 ui_image_storage = (ui_image_storage + 1) * 2;
1928 ui_images = realloc(ui_images, ui_image_storage * sizeof(*ui_images)); 1934 ui_images = realloc(ui_images, ui_image_storage * sizeof(*ui_images));
1929 } 1935 }
1930 ui_image *this_image = ui_images[num_ui_images-1] = calloc(1, sizeof(ui_image)); 1936 ui_image *this_image = ui_images[num_ui_images-1] = calloc(1, sizeof(ui_image));
1931 this_image->image_data = load_png(buf, buf_size, &this_image->width, &this_image->height); 1937 this_image->image_data = load_png(buf, buf_size, &this_image->width, &this_image->height);
1938 #ifdef USE_GLES
1939 uint32_t *cur = this_image->image_data;
1940 for (int i = 0; i < this_image->width*this_image->height; i++, cur++)
1941 {
1942 uint32_t pixel = *cur;
1943 *cur = (pixel & 0xFF00FF00) | (pixel << 16 & 0xFF0000) | (pixel >> 16 & 0xFF);
1944 }
1945 #endif
1932 free(buf); 1946 free(buf);
1933 if (!this_image->image_data) { 1947 if (!this_image->image_data) {
1934 num_ui_images--; 1948 num_ui_images--;
1935 free(this_image); 1949 free(this_image);
1936 return NULL; 1950 return NULL;