(XDK) Fixes rotation on Xbox 1

This commit is contained in:
twinaphex 2012-11-20 15:03:20 +01:00
parent 734fdc4bf6
commit 7937bff786

View File

@ -47,7 +47,6 @@
#if defined(_XBOX1) #if defined(_XBOX1)
wchar_t strw_buffer[128]; wchar_t strw_buffer[128];
unsigned font_x, font_y; unsigned font_x, font_y;
FLOAT angle;
#elif defined(_XBOX360) #elif defined(_XBOX360)
const DWORD g_MapLinearToSrgbGpuFormat[] = const DWORD g_MapLinearToSrgbGpuFormat[] =
{ {
@ -256,30 +255,37 @@ static void xdk_d3d_set_rotation(void * data, unsigned orientation)
{ {
(void)data; (void)data;
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data; xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)data;
FLOAT angle; FLOAT angle = 0;
switch(orientation) switch(orientation)
{ {
case ORIENTATION_NORMAL: case ORIENTATION_NORMAL:
angle = M_PI * 0 / 180; angle = M_PI * 0 / 180;
break; break;
case ORIENTATION_VERTICAL: case ORIENTATION_FLIPPED_ROTATED:
angle = M_PI * 270 / 180; angle = M_PI * 90 / 180;
break; break;
case ORIENTATION_FLIPPED: case ORIENTATION_FLIPPED:
angle = M_PI * 180 / 180; angle = M_PI * 180 / 180;
break; break;
case ORIENTATION_FLIPPED_ROTATED: case ORIENTATION_VERTICAL:
angle = M_PI * 90 / 180; angle = M_PI * 270 / 180;
break; break;
} }
#ifdef HAVE_HLSL #if defined(HAVE_HLSL)
/* TODO: Move to D3DXMATRIX here */ /* TODO: Move to D3DXMATRIX here */
hlsl_set_proj_matrix(XMMatrixRotationZ(angle)); hlsl_set_proj_matrix(XMMatrixRotationZ(d3d->angle));
#endif
d3d->should_resize = TRUE; d3d->should_resize = TRUE;
#elif defined(_XBOX1)
D3DXMATRIX p_out, p_rotate;
D3DXMatrixIdentity(&p_out);
D3DXMatrixRotationZ(&p_rotate, angle);
d3d->d3d_render_device->SetTransform(D3DTS_WORLD, &p_rotate);
d3d->d3d_render_device->SetTransform(D3DTS_VIEW, &p_out);
d3d->d3d_render_device->SetTransform(D3DTS_PROJECTION, &p_out);
#endif
} }
#ifdef HAVE_FBO #ifdef HAVE_FBO
@ -352,18 +358,12 @@ void xdk_d3d_generate_pp(D3DPRESENT_PARAMETERS *d3dpp, const video_info_t *video
if(XGetAVPack() == XC_AV_PACK_HDTV) if(XGetAVPack() == XC_AV_PACK_HDTV)
{ {
if(video_mode & XC_VIDEO_FLAGS_HDTV_480p) if(video_mode & XC_VIDEO_FLAGS_HDTV_480p)
{
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE; d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
}
else if(video_mode & XC_VIDEO_FLAGS_HDTV_720p) else if(video_mode & XC_VIDEO_FLAGS_HDTV_720p)
{
d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE; d3dpp->Flags = D3DPRESENTFLAG_PROGRESSIVE;
}
else if(video_mode & XC_VIDEO_FLAGS_HDTV_1080i) else if(video_mode & XC_VIDEO_FLAGS_HDTV_1080i)
{
d3dpp->Flags = D3DPRESENTFLAG_INTERLACED; d3dpp->Flags = D3DPRESENTFLAG_INTERLACED;
} }
}
if(g_extern.console.rmenu.state.rmenu_widescreen.enable) if(g_extern.console.rmenu.state.rmenu_widescreen.enable)
d3dpp->Flags |= D3DPRESENTFLAG_WIDESCREEN; d3dpp->Flags |= D3DPRESENTFLAG_WIDESCREEN;
@ -739,14 +739,6 @@ static bool xdk_d3d_frame(void *data, const void *frame,
#if defined(_XBOX1) #if defined(_XBOX1)
d3d->d3d_render_device->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1); d3d->d3d_render_device->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1);
D3DXMATRIX p_out, p_rotate;
D3DXMatrixIdentity(&p_out);
D3DXMatrixRotationZ(&p_rotate, angle);
d3d->d3d_render_device->SetTransform(D3DTS_WORLD, &p_rotate);
d3d->d3d_render_device->SetTransform(D3DTS_VIEW, &p_out);
d3d->d3d_render_device->SetTransform(D3DTS_PROJECTION, &p_out);
d3d->d3d_render_device->SetStreamSource(0, d3d->vertex_buf, sizeof(DrawVerticeFormats)); d3d->d3d_render_device->SetStreamSource(0, d3d->vertex_buf, sizeof(DrawVerticeFormats));
d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, 0xff000000, 1.0f, 0); d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET, 0xff000000, 1.0f, 0);