1
0
mirror of https://github.com/libretro/RetroArch synced 2025-03-27 14:37:32 +00:00

(PS3 RMenu) RMenu now renders background texture the same way

as RGUI
This commit is contained in:
twinaphex 2013-04-10 06:22:37 +02:00
parent 7cf75e5eb4
commit d313e9b8f9
3 changed files with 13 additions and 80 deletions
frontend/menu
gfx
ps3

@ -211,43 +211,6 @@ static const char *menu_drive_mapping_next(void)
RMENU GRAPHICS
============================================================ */
#ifdef HAVE_OPENGL
GLuint menu_texture_id;
#endif
static void texture_image_border_load(const char *path)
{
#ifdef HAVE_OPENGL
gl_t *gl = driver.video_data;
if (!gl)
return;
glGenTextures(1, &menu_texture_id);
RARCH_LOG("Loading texture image for menu...\n");
if (!texture_image_load(path, &menu_texture))
{
RARCH_ERR("Failed to load texture image for menu.\n");
return;
}
glBindTexture(GL_TEXTURE_2D, menu_texture_id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gl->border_type);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gl->border_type);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, RARCH_GL_INTERNAL_FORMAT32,
menu_texture.width, menu_texture.height, 0,
RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, menu_texture.pixels);
glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]);
free(menu_texture.pixels);
#endif
}
static void rmenu_gfx_init(void)
{
#ifdef _XBOX1
@ -258,41 +221,7 @@ static void rmenu_gfx_init(void)
if (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_LOW_RAM_MODE_ENABLE))
return;
#ifdef _XBOX1
texture_image_load(g_extern.menu_texture_path, &menu_texture);
#else
texture_image_border_load(g_extern.menu_texture_path);
#endif
}
static void rmenu_gfx_frame(void *data)
{
(void)data;
#if defined(HAVE_OPENGL)
gl_t *gl = (gl_t*)data;
gl_shader_use(gl, RARCH_CG_MENU_SHADER_INDEX);
gl_set_viewport(gl, gl->win_width, gl->win_height, true, false);
if (gl->shader)
{
gl->shader->set_params(gl->win_width, gl->win_height,
gl->win_width, gl->win_height,
gl->win_width, gl->win_height,
g_extern.frame_count, NULL, NULL, NULL, 0);
}
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, menu_texture_id);
gl->coords.vertex = vertexes_flipped;
gl_shader_set_coords(gl, &gl->coords, &gl->mvp);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]);
gl_set_viewport(gl, gl->win_width, gl->win_height, false, true);
#endif
}
static void rmenu_gfx_free(void)
@ -1106,11 +1035,7 @@ static int select_file(uint8_t menu_type, uint64_t input)
config_read_keybinds(path);
break;
case BORDER_CHOICE:
#ifdef _XBOX1
texture_image_load(path, &menu_texture);
#else
texture_image_border_load(path);
#endif
strlcpy(g_extern.menu_texture_path, path, sizeof(g_extern.menu_texture_path));
break;
case LIBRETRO_CHOICE:
@ -3169,8 +3094,18 @@ bool menu_iterate(void)
driver.video_poke->set_blend(driver.video_data, true);
}
// draw last frame for loading messages
if (driver.video_poke && driver.video_poke->set_texture_enable)
{
driver.video_poke->set_texture_frame(driver.video_data, menu_texture.pixels,
true, menu_texture.width, menu_texture.height, 1.0f);
driver.video_poke->set_texture_enable(driver.video_data, true);
}
rarch_render_cached_frame();
rmenu_gfx_frame(driver.video_data);
if (driver.video_poke && driver.video_poke->set_texture_enable)
driver.video_poke->set_texture_enable(driver.video_data, false);
}
//first button input frame

@ -1488,9 +1488,7 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei
}
#endif
#if defined(HAVE_RMENU)
if (!(lifecycle_mode_state & (1ULL << MODE_MENU_DRAW)))
#endif
context_swap_buffers_func();
#if !defined(HAVE_OPENGLES) && defined(HAVE_FFMPEG)

@ -300,7 +300,7 @@ bool texture_image_load(const char *path, struct texture_image *out_img)
if (!ps3graphics_load_png(path, out_img))
{
free(out_img->pixels);
return false;
return false;
}
}
else
@ -308,7 +308,7 @@ bool texture_image_load(const char *path, struct texture_image *out_img)
if (!ps3graphics_load_jpeg(path, out_img))
{
free(out_img->pixels);
return false;
return false;
}
}