(D3D) Use d3d_texture_new

This commit is contained in:
twinaphex 2014-09-13 18:36:35 +02:00
parent ea1c220ea5
commit 82e7112f41
2 changed files with 28 additions and 15 deletions

View File

@ -49,11 +49,18 @@ LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev,
{
HRESULT hr;
LPDIRECT3DTEXTURE buf;
hr = D3DXCreateTextureFromFileExA(dev,
path, width, height, miplevels, usage, format,
pool, filter, mipfilter, color_key, src_info,
palette, &buf);
if (!dev)
return NULL;
if (path != NULL)
hr = D3DXCreateTextureFromFileExA(dev,
path, width, height, miplevels, usage, format,
pool, filter, mipfilter, color_key, src_info,
palette, &buf);
else
hr = dev->CreateTexture(width, height, miplevels, usage,
format, pool, &buf, NULL);
if (FAILED(hr))
return NULL;

View File

@ -125,12 +125,15 @@ bool renderchain_set_pass_size(void *data, unsigned pass_index,
pass->info.tex_w = width;
pass->info.tex_h = height;
if (FAILED(d3dr->CreateTexture(width, height, 1,
pass->tex = (LPDIRECT3DTEXTURE)d3d_texture_new(
d3dr, NULL, width, height, 1,
D3DUSAGE_RENDERTARGET,
chain->passes.back().info.pass->fbo.fp_fbo ?
D3DFMT_A32B32G32R32F : D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT,
&pass->tex, NULL)))
D3DPOOL_DEFAULT, 0, 0, 0,
NULL, NULL);
if (!pass->tex)
return false;
d3d_set_texture(d3dr, 0, pass->tex);
@ -164,12 +167,13 @@ bool renderchain_add_pass(void *data, const LinkInfo *info)
if (!pass.vertex_buf)
return false;
if (FAILED(d3dr->CreateTexture(info->tex_w, info->tex_h, 1,
pass.tex = d3d_texture_new(d3dr, NULL, info->tex_w, info->tex_h, 1,
D3DUSAGE_RENDERTARGET,
chain->passes.back().info.pass->fbo.fp_fbo
? D3DFMT_A32B32G32R32F : D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT,
&pass.tex, NULL)))
D3DPOOL_DEFAULT, 0, 0, 0, NULL, NULL);
if (!pass.tex)
return false;
d3d_set_texture(d3dr, 0, pass.tex);
@ -367,10 +371,12 @@ bool renderchain_create_first_pass(void *data, const LinkInfo *info,
if (!chain->prev.vertex_buf[i])
return false;
if (FAILED(d3dr->CreateTexture(info->tex_w, info->tex_h, 1, 0,
fmt == RGB565 ? D3DFMT_R5G6B5 : D3DFMT_X8R8G8B8,
D3DPOOL_MANAGED,
&chain->prev.tex[i], NULL)))
chain->prev.tex[i] = (LPDIRECT3DTEXTURE)d3d_texture_new(
d3dr, NULL, d3info->tex_w, info->tex_h, 1, 0,
fmt == RGB565 ? D3DFMT_R5G6B5 : D3DFMT_X8R8G8B8,
D3DPOOL_MANAGED, 0, 0, 0, NULL, NULL);
if (!chain->prev.tex[i])
return false;
d3d_set_texture(d3dr, 0, chain->prev.tex[i]);