30 #define DIRECTINPUT_VERSION 0x0800
46 #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
62 g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
65 g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
66 g_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
67 g_pd3dDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
68 g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
69 g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
70 g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, TRUE);
71 g_pd3dDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
73 g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
74 g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
75 g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
76 g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
77 g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
78 g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
79 g_pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
80 g_pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
90 D3DMATRIX mat_identity = { { { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } } };
91 D3DMATRIX mat_projection =
93 2.0f/(R-L), 0.0
f, 0.0
f, 0.0
f,
94 0.0
f, 2.0
f/(
T-B), 0.0f, 0.0f,
95 0.0f, 0.0f, 0.5f, 0.0f,
96 (L+R)/(L-R), (
T+B)/(B-
T), 0.5f, 1.0f
100 g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &mat_projection);
113 if (!
g_pVB || g_VertexBufferSize < draw_data->TotalVtxCount)
120 if (!
g_pIB || g_IndexBufferSize < draw_data->TotalIdxCount)
129 IDirect3DStateBlock9* d3d9_state_block =
NULL;
130 if (
g_pd3dDevice->CreateStateBlock(D3DSBT_ALL, &d3d9_state_block) < 0)
134 D3DMATRIX last_world, last_view, last_projection;
137 g_pd3dDevice->GetTransform(D3DTS_PROJECTION, &last_projection);
155 vtx_dst->
pos[0] = vtx_src->
pos.
x;
156 vtx_dst->pos[1] = vtx_src->
pos.
y;
157 vtx_dst->pos[2] = 0.0f;
158 vtx_dst->col = (vtx_src->
col & 0xFF00FF00) | ((vtx_src->
col & 0xFF0000) >> 16) | ((vtx_src->
col & 0xFF) << 16);
159 vtx_dst->uv[0] = vtx_src->
uv.
x;
160 vtx_dst->uv[1] = vtx_src->
uv.
y;
178 int global_vtx_offset = 0;
179 int global_idx_offset = 0;
184 for (
int cmd_i = 0; cmd_i < cmd_list->
CmdBuffer.
Size; cmd_i++)
212 g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &last_projection);
215 d3d9_state_block->Apply();
216 d3d9_state_block->Release();
249 D3DLOCKED_RECT tex_locked_rect;
253 memcpy((
unsigned char *)tex_locked_rect.pBits + tex_locked_rect.Pitch *
y,
pixels + (
width * bytes_per_pixel) *
y, (
width * bytes_per_pixel));