mirror of
https://github.com/libretro/RetroArch
synced 2025-02-11 15:40:28 +00:00
(D3D8) Implement rotation matrix
This commit is contained in:
parent
3271b61b6a
commit
ef63b4342c
@ -38,6 +38,7 @@ typedef struct d3d8_renderchain
|
|||||||
void *vertex_decl;
|
void *vertex_decl;
|
||||||
unsigned tex_w;
|
unsigned tex_w;
|
||||||
unsigned tex_h;
|
unsigned tex_h;
|
||||||
|
unsigned rotation;
|
||||||
uint64_t frame_count;
|
uint64_t frame_count;
|
||||||
} d3d8_renderchain_t;
|
} d3d8_renderchain_t;
|
||||||
|
|
||||||
@ -47,18 +48,21 @@ static void d3d8_renderchain_set_mvp(
|
|||||||
void *shader_data,
|
void *shader_data,
|
||||||
const void *mat_data)
|
const void *mat_data)
|
||||||
{
|
{
|
||||||
D3DMATRIX matrix;
|
D3DMATRIX proj, ortho, rot;
|
||||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||||
|
d3d8_renderchain_t *chain = (d3d8_renderchain_t*)chain_data;
|
||||||
|
|
||||||
d3d_matrix_identity(&matrix);
|
if (!d3d || !chain)
|
||||||
|
return;
|
||||||
|
|
||||||
d3d_set_transform(d3d->dev, D3DTS_PROJECTION, &matrix);
|
d3d_matrix_ortho_off_center_lh(&ortho, 0, 1, 0, 1, 0.0f, 1.0f);
|
||||||
d3d_set_transform(d3d->dev, D3DTS_VIEW, &matrix);
|
d3d_matrix_identity(&rot);
|
||||||
|
d3d_set_transform(d3d->dev, D3DTS_VIEW, &rot);
|
||||||
|
d3d_set_transform(d3d->dev, D3DTS_PROJECTION, &rot);
|
||||||
|
d3d_matrix_rotation_z(&rot, chain->rotation * (M_PI / 2.0));
|
||||||
|
d3d_matrix_multiply(&proj, &ortho, &rot);
|
||||||
|
|
||||||
if (mat_data)
|
d3d_set_transform(d3d->dev, D3DTS_WORLD, &proj);
|
||||||
d3d_matrix_transpose(&matrix, mat_data);
|
|
||||||
|
|
||||||
d3d_set_transform(d3d->dev, D3DTS_WORLD, &matrix);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool d3d8_renderchain_create_first_pass(void *data,
|
static bool d3d8_renderchain_create_first_pass(void *data,
|
||||||
@ -283,6 +287,7 @@ static void d3d8_renderchain_render_pass(
|
|||||||
D3DTEXF_LINEAR : D3DTEXF_POINT);
|
D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||||
d3d_set_sampler_minfilter(d3dr, pass_index, settings->bools.video_smooth ?
|
d3d_set_sampler_minfilter(d3dr, pass_index, settings->bools.video_smooth ?
|
||||||
D3DTEXF_LINEAR : D3DTEXF_POINT);
|
D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||||
|
chain->rotation = rotation;
|
||||||
|
|
||||||
d3d_set_viewports(chain->dev, &d3d->final_viewport);
|
d3d_set_viewports(chain->dev, &d3d->final_viewport);
|
||||||
d3d_set_vertex_shader(d3dr, D3DFVF_CUSTOMVERTEX, NULL);
|
d3d_set_vertex_shader(d3dr, D3DFVF_CUSTOMVERTEX, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user