mirror of
https://github.com/libretro/RetroArch.git
synced 2025-03-04 07:57:25 +00:00
(D3D) Create d3d_vertex_buffer_free/d3d_texture_new/d3d_texture_free
This commit is contained in:
parent
138541f6cc
commit
0b5a9a244c
@ -40,6 +40,33 @@ void d3d_swap(void *data, LPDIRECT3DDEVICE dev)
|
||||
#endif
|
||||
}
|
||||
|
||||
LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev,
|
||||
const char *path, unsigned width, unsigned height,
|
||||
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
||||
D3DPOOL pool, unsigned filter, unsigned mipfilter,
|
||||
D3DCOLOR color_key, D3DXIMAGE_INFO *src_info,
|
||||
PALETTEENTRY *palette)
|
||||
{
|
||||
HRESULT hr;
|
||||
LPDIRECT3DTEXTURE buf;
|
||||
|
||||
hr = D3DXCreateTextureFromFileExA(dev,
|
||||
path, width, height, miplevels, usage, format,
|
||||
pool, filter, mipfilter, color_key, src_info,
|
||||
palette, &buf);
|
||||
|
||||
if (FAILED(hr))
|
||||
return NULL;
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
void d3d_texture_free(LPDIRECT3DTEXTURE tex)
|
||||
{
|
||||
if (tex)
|
||||
tex->Release();
|
||||
}
|
||||
|
||||
LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev,
|
||||
unsigned length, unsigned usage, unsigned fvf,
|
||||
D3DPOOL pool, void *handle)
|
||||
@ -63,6 +90,12 @@ LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev,
|
||||
return buf;
|
||||
}
|
||||
|
||||
void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf)
|
||||
{
|
||||
if (buf)
|
||||
buf->Release();
|
||||
}
|
||||
|
||||
void d3d_set_stream_source(LPDIRECT3DDEVICE dev, unsigned stream_no,
|
||||
LPDIRECT3DVERTEXBUFFER stream_vertbuf, unsigned offset_bytes,
|
||||
unsigned stride)
|
||||
|
@ -26,10 +26,21 @@ LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev,
|
||||
unsigned length, unsigned usage, unsigned fvf,
|
||||
D3DPOOL pool, void *handle);
|
||||
|
||||
void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf);
|
||||
|
||||
LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev,
|
||||
const char *path, unsigned width, unsigned height,
|
||||
unsigned miplevels, unsigned usage, D3DFORMAT format,
|
||||
D3DPOOL pool, unsigned filter, unsigned mipfilter,
|
||||
D3DCOLOR color_key, D3DXIMAGE_INFO *src_info,
|
||||
PALETTEENTRY *palette);
|
||||
|
||||
void d3d_set_stream_source(LPDIRECT3DDEVICE dev, unsigned stream_no,
|
||||
LPDIRECT3DVERTEXBUFFER stream_vertbuf, unsigned offset_bytes,
|
||||
unsigned stride);
|
||||
|
||||
void d3d_texture_free(LPDIRECT3DTEXTURE tex);
|
||||
|
||||
void d3d_set_sampler_address_u(LPDIRECT3DDEVICE dev,
|
||||
unsigned sampler, unsigned value);
|
||||
|
||||
|
@ -23,17 +23,15 @@ bool texture_image_load(struct texture_image *out_img, const char *path)
|
||||
|
||||
D3DXIMAGE_INFO m_imageInfo;
|
||||
|
||||
out_img->pixels = NULL;
|
||||
out_img->vertex_buf = NULL;
|
||||
|
||||
if (FAILED(D3DXCreateTextureFromFileExA(d3d->dev,
|
||||
path, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_A8R8G8B8,
|
||||
D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, &m_imageInfo, NULL,
|
||||
&out_img->pixels)))
|
||||
{
|
||||
RARCH_ERR("Error occurred during D3DXCreateTextureFromFileExA().\n");
|
||||
out_img->pixels = d3d_texture_new(d3d->dev, path,
|
||||
D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0,
|
||||
D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_DEFAULT,
|
||||
D3DX_DEFAULT, 0, &m_imageInfo, NULL);
|
||||
|
||||
if (!out_img->pixels)
|
||||
return false;
|
||||
}
|
||||
|
||||
/* create a vertex buffer for the quad that will display the texture */
|
||||
out_img->vertex_buf = (LPDIRECT3DVERTEXBUFFER)d3d_vertex_buffer_new(
|
||||
@ -42,8 +40,7 @@ bool texture_image_load(struct texture_image *out_img, const char *path)
|
||||
|
||||
if (!out_img->vertex_buf)
|
||||
{
|
||||
RARCH_ERR("Error occurred during CreateVertexBuffer().\n");
|
||||
out_img->pixels->Release();
|
||||
d3d_texture_free(out_img->pixels);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -58,9 +55,7 @@ void texture_image_free(struct texture_image *img)
|
||||
if (!img)
|
||||
return;
|
||||
|
||||
if (img->vertex_buf)
|
||||
img->vertex_buf->Release();
|
||||
if (img->pixels)
|
||||
img->pixels->Release();
|
||||
d3d_vertex_buffer_free(img->vertex_buf);
|
||||
d3d_texture_free(img->pixels);
|
||||
memset(img, 0, sizeof(*img));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user