From 8b9fc04f2e3fb555dd568e0004beedd6868d1774 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 7 Jun 2014 05:33:42 +0200 Subject: [PATCH] (XDK) Changes to bring inline with PC D3D --- gfx/d3d9/d3d.cpp | 2 ++ xdk/xdk_d3d.cpp | 22 ++++++++++++++++++++++ xdk/xdk_d3d.h | 25 ++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/gfx/d3d9/d3d.cpp b/gfx/d3d9/d3d.cpp index e428d9bb41..6b3e53c228 100644 --- a/gfx/d3d9/d3d.cpp +++ b/gfx/d3d9/d3d.cpp @@ -1433,7 +1433,9 @@ static void *d3d_init(const video_info_t *info, const input_driver_t **input, //default values vid->g_pD3D = NULL; vid->dev = NULL; +#ifndef _XBOX vid->font = NULL; +#endif vid->dev_rotation = 0; vid->needs_restore = false; #ifdef HAVE_CG diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index 702726b354..528a08291d 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -1093,6 +1093,21 @@ static bool d3d_construct(void *data, const video_info_t *info, const input_driv gfx_set_dwm(); #endif +#ifdef HAVE_MENU + if (d3d->rgui) + free(d3d->rgui); + + d3d->rgui = (overlay_t*)calloc(1, sizeof(overlay_t)); + d3d->rgui->tex_coords.x = 0; + d3d->rgui->tex_coords.y = 0; + d3d->rgui->tex_coords.w = 1; + d3d->rgui->tex_coords.h = 1; + d3d->rgui->vert_coords.x = 0; + d3d->rgui->vert_coords.y = 1; + d3d->rgui->vert_coords.w = 1; + d3d->rgui->vert_coords.h = -1; +#endif + #ifdef HAVE_WINDOW memset(&d3d->windowClass, 0, sizeof(d3d->windowClass)); d3d->windowClass.cbSize = sizeof(d3d->windowClass); @@ -1233,13 +1248,20 @@ static void *d3d_init(const video_info_t *info, const input_driver_t **input, vo //default values vid->g_pD3D = NULL; vid->dev = NULL; +#ifndef _XBOX + vid->font = NULL; +#endif vid->dev_rotation = 0; vid->needs_restore = false; #ifdef HAVE_CG vid->cgCtx = NULL; +#endif +#ifdef HAVE_OVERLAY + vid->overlays_enabled = false; #endif vid->should_resize = false; vid->vsync = info->vsync; + vid->rgui = NULL; if (!d3d_construct(vid, info, input, input_data)) { diff --git a/xdk/xdk_d3d.h b/xdk/xdk_d3d.h index 2e64233ee2..a8439b3fb2 100644 --- a/xdk/xdk_d3d.h +++ b/xdk/xdk_d3d.h @@ -36,6 +36,22 @@ #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW | D3DFVF_TEX1) #endif +typedef struct +{ + struct Coords + { + float x, y, w, h; + }; + Coords tex_coords; + Coords vert_coords; + unsigned tex_w, tex_h; + bool fullscreen; + bool enabled; + float alpha_mod; + LPDIRECT3DTEXTURE tex; + LPDIRECT3DVERTEXBUFFER vert_buf; +} overlay_t; + typedef struct DrawVerticeFormats { float x, y; @@ -50,6 +66,7 @@ typedef struct gl_shader_backend gl_shader_backend_t; typedef struct d3d_video { + const d3d_font_renderer_t *font_ctx; const gfx_ctx_driver_t *ctx_driver; const gl_shader_backend_t *shader; bool should_resize; @@ -63,6 +80,9 @@ typedef struct d3d_video HWND hWnd; LPDIRECT3D g_pD3D; LPDIRECT3DDEVICE dev; +#ifndef _XBOX + LPD3DXFONT font; +#endif #ifdef HAVE_D3D9 LPDIRECT3DSURFACE lpSurface; LPDIRECT3DTEXTURE lpTexture_ot_as16srgb; @@ -72,7 +92,6 @@ typedef struct d3d_video bool rgui_texture_enable; bool rgui_texture_full_screen; #endif - const d3d_font_renderer_t *font_ctx; D3DVIEWPORT final_viewport; video_info_t video_info; HRESULT d3d_err; @@ -90,6 +109,10 @@ typedef struct d3d_video // RENDERCHAIN PASS -> INFO unsigned tex_w; unsigned tex_h; + +#ifdef HAVE_MENU + overlay_t *rgui; +#endif } d3d_video_t; extern void d3d_make_d3dpp(void *data, const video_info_t *info, D3DPRESENT_PARAMETERS *d3dpp);