(XDK1) Now renders RGUI and game frame properly

This commit is contained in:
twinaphex 2018-01-20 06:25:02 +01:00
parent e6f637ea6b
commit c106783e85
2 changed files with 44 additions and 9 deletions

View File

@ -478,6 +478,24 @@ static void d3d_deinitialize(d3d_video_t *d3d)
#define FS_PRESENTINTERVAL(pp) ((pp)->PresentationInterval)
#endif
static D3DFORMAT d3d_get_argb8888_format(void)
{
#ifdef _XBOX
return D3DFMT_LIN_A8R8G8B8;
#else
return D3DFMT_A8R8G8B8;
#endif
}
static D3DFORMAT d3d_get_xrgb8888_format(void)
{
#ifdef _XBOX
return D3DFMT_LIN_X8R8G8B8;
#else
return D3DFMT_X8R8G8B8;
#endif
}
static D3DFORMAT d3d_get_color_format_backbuffer(bool rgb32, bool windowed)
{
D3DFORMAT fmt = D3DFMT_UNKNOWN;
@ -1316,6 +1334,12 @@ static void d3d_overlay_tex_geom(
d3d->overlays[index].tex_coords[1] = y;
d3d->overlays[index].tex_coords[2] = w;
d3d->overlays[index].tex_coords[3] = h;
#ifdef _XBOX1
d3d->overlays[index].tex_coords[0] *= d3d->overlays[index].tex_w;
d3d->overlays[index].tex_coords[1] *= d3d->overlays[index].tex_h;
d3d->overlays[index].tex_coords[2] *= d3d->overlays[index].tex_w;
d3d->overlays[index].tex_coords[3] *= d3d->overlays[index].tex_h;
#endif
}
static void d3d_overlay_vertex_geom(
@ -1362,7 +1386,7 @@ static bool d3d_overlay_load(void *data,
overlay->tex = d3d_texture_new(d3d->dev, NULL,
width, height, 1,
0,
D3DFMT_A8R8G8B8,
d3d_get_argb8888_format(),
D3DPOOL_MANAGED, 0, 0, 0,
NULL, NULL, false);
@ -1624,7 +1648,7 @@ static void d3d_set_menu_texture_frame(void *data,
d3d->menu->tex = d3d_texture_new(d3d->dev, NULL,
width, height, 1,
0, D3DFMT_A8R8G8B8,
0, d3d_get_argb8888_format(),
D3DPOOL_MANAGED, 0, 0, 0, NULL, NULL, false);
if (!d3d->menu->tex)
@ -1633,8 +1657,12 @@ static void d3d_set_menu_texture_frame(void *data,
return;
}
d3d->menu->tex_w = width;
d3d->menu->tex_h = height;
d3d->menu->tex_w = width;
d3d->menu->tex_h = height;
#ifdef _XBOX1
d3d->menu->tex_coords [2] = width;
d3d->menu->tex_coords[3] = height;
#endif
}
d3d->menu->alpha_mod = alpha;
@ -1714,7 +1742,8 @@ static void video_texture_load_d3d(d3d_video_t *d3d,
tex = d3d_texture_new(d3d->dev, NULL,
ti->width, ti->height, 0,
usage, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, 0, 0, 0,
usage, d3d_get_argb8888_format(),
D3DPOOL_MANAGED, 0, 0, 0,
NULL, NULL, want_mipmap);
if (!tex)

View File

@ -142,12 +142,18 @@ static void d3d8_renderchain_set_vertices(void *data, unsigned pass,
vert[0].u = 0.0f;
vert[0].v = 0.0f;
vert[1].u = tex_w / chain->tex_w;
vert[1].v = 0.0f;
vert[2].u = 0.0f;
vert[2].v = tex_h / chain->tex_h;
vert[3].u = tex_w / chain->tex_w;
vert[3].v = tex_h / chain->tex_h;
vert[1].u = tex_w;
vert[2].v = tex_h;
vert[3].u = tex_w;
vert[3].v = tex_h;
#ifndef _XBOX1
vert[1].u /= chain->tex_w;
vert[2].v /= chain->tex_h;
vert[3].u /= chain->tex_w;
vert[3].v /= chain->tex_h;
#endif
vert[0].color = 0xFFFFFFFF;
vert[1].color = 0xFFFFFFFF;