mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-04 19:51:01 -05:00
772 lines
26 KiB
C
772 lines
26 KiB
C
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (C) Microsoft Corporation. All Rights Reserved.
|
|
//
|
|
// File: d3dx11tex.h
|
|
// Content: D3DX11 texturing APIs
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "d3dx11.h"
|
|
|
|
#ifndef __D3DX11TEX_H__
|
|
#define __D3DX11TEX_H__
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_FILTER flags:
|
|
// ------------------
|
|
//
|
|
// A valid filter must contain one of these values:
|
|
//
|
|
// D3DX11_FILTER_NONE
|
|
// No scaling or filtering will take place. Pixels outside the bounds
|
|
// of the source image are assumed to be transparent black.
|
|
// D3DX11_FILTER_POINT
|
|
// Each destination pixel is computed by sampling the nearest pixel
|
|
// from the source image.
|
|
// D3DX11_FILTER_LINEAR
|
|
// Each destination pixel is computed by linearly interpolating between
|
|
// the nearest pixels in the source image. This filter works best
|
|
// when the scale on each axis is less than 2.
|
|
// D3DX11_FILTER_TRIANGLE
|
|
// Every pixel in the source image contributes equally to the
|
|
// destination image. This is the slowest of all the filters.
|
|
// D3DX11_FILTER_BOX
|
|
// Each pixel is computed by averaging a 2x2(x2) box pixels from
|
|
// the source image. Only works when the dimensions of the
|
|
// destination are half those of the source. (as with mip maps)
|
|
//
|
|
// And can be OR'd with any of these optional flags:
|
|
//
|
|
// D3DX11_FILTER_MIRROR_U
|
|
// Indicates that pixels off the edge of the texture on the U-axis
|
|
// should be mirrored, not wraped.
|
|
// D3DX11_FILTER_MIRROR_V
|
|
// Indicates that pixels off the edge of the texture on the V-axis
|
|
// should be mirrored, not wraped.
|
|
// D3DX11_FILTER_MIRROR_W
|
|
// Indicates that pixels off the edge of the texture on the W-axis
|
|
// should be mirrored, not wraped.
|
|
// D3DX11_FILTER_MIRROR
|
|
// Same as specifying D3DX11_FILTER_MIRROR_U | D3DX11_FILTER_MIRROR_V |
|
|
// D3DX11_FILTER_MIRROR_V
|
|
// D3DX11_FILTER_DITHER
|
|
// Dithers the resulting image using a 4x4 order dither pattern.
|
|
// D3DX11_FILTER_SRGB_IN
|
|
// Denotes that the input data is in sRGB (gamma 2.2) colorspace.
|
|
// D3DX11_FILTER_SRGB_OUT
|
|
// Denotes that the output data is in sRGB (gamma 2.2) colorspace.
|
|
// D3DX11_FILTER_SRGB
|
|
// Same as specifying D3DX11_FILTER_SRGB_IN | D3DX11_FILTER_SRGB_OUT
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum D3DX11_FILTER_FLAG
|
|
{
|
|
D3DX11_FILTER_NONE = (1 << 0),
|
|
D3DX11_FILTER_POINT = (2 << 0),
|
|
D3DX11_FILTER_LINEAR = (3 << 0),
|
|
D3DX11_FILTER_TRIANGLE = (4 << 0),
|
|
D3DX11_FILTER_BOX = (5 << 0),
|
|
|
|
D3DX11_FILTER_MIRROR_U = (1 << 16),
|
|
D3DX11_FILTER_MIRROR_V = (2 << 16),
|
|
D3DX11_FILTER_MIRROR_W = (4 << 16),
|
|
D3DX11_FILTER_MIRROR = (7 << 16),
|
|
|
|
D3DX11_FILTER_DITHER = (1 << 19),
|
|
D3DX11_FILTER_DITHER_DIFFUSION= (2 << 19),
|
|
|
|
D3DX11_FILTER_SRGB_IN = (1 << 21),
|
|
D3DX11_FILTER_SRGB_OUT = (2 << 21),
|
|
D3DX11_FILTER_SRGB = (3 << 21),
|
|
} D3DX11_FILTER_FLAG;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_NORMALMAP flags:
|
|
// ---------------------
|
|
// These flags are used to control how D3DX11ComputeNormalMap generates normal
|
|
// maps. Any number of these flags may be OR'd together in any combination.
|
|
//
|
|
// D3DX11_NORMALMAP_MIRROR_U
|
|
// Indicates that pixels off the edge of the texture on the U-axis
|
|
// should be mirrored, not wraped.
|
|
// D3DX11_NORMALMAP_MIRROR_V
|
|
// Indicates that pixels off the edge of the texture on the V-axis
|
|
// should be mirrored, not wraped.
|
|
// D3DX11_NORMALMAP_MIRROR
|
|
// Same as specifying D3DX11_NORMALMAP_MIRROR_U | D3DX11_NORMALMAP_MIRROR_V
|
|
// D3DX11_NORMALMAP_INVERTSIGN
|
|
// Inverts the direction of each normal
|
|
// D3DX11_NORMALMAP_COMPUTE_OCCLUSION
|
|
// Compute the per pixel Occlusion term and encodes it into the alpha.
|
|
// An Alpha of 1 means that the pixel is not obscured in anyway, and
|
|
// an alpha of 0 would mean that the pixel is completly obscured.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum D3DX11_NORMALMAP_FLAG
|
|
{
|
|
D3DX11_NORMALMAP_MIRROR_U = (1 << 16),
|
|
D3DX11_NORMALMAP_MIRROR_V = (2 << 16),
|
|
D3DX11_NORMALMAP_MIRROR = (3 << 16),
|
|
D3DX11_NORMALMAP_INVERTSIGN = (8 << 16),
|
|
D3DX11_NORMALMAP_COMPUTE_OCCLUSION = (16 << 16),
|
|
} D3DX11_NORMALMAP_FLAG;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_CHANNEL flags:
|
|
// -------------------
|
|
// These flags are used by functions which operate on or more channels
|
|
// in a texture.
|
|
//
|
|
// D3DX11_CHANNEL_RED
|
|
// Indicates the red channel should be used
|
|
// D3DX11_CHANNEL_BLUE
|
|
// Indicates the blue channel should be used
|
|
// D3DX11_CHANNEL_GREEN
|
|
// Indicates the green channel should be used
|
|
// D3DX11_CHANNEL_ALPHA
|
|
// Indicates the alpha channel should be used
|
|
// D3DX11_CHANNEL_LUMINANCE
|
|
// Indicates the luminaces of the red green and blue channels should be
|
|
// used.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum D3DX11_CHANNEL_FLAG
|
|
{
|
|
D3DX11_CHANNEL_RED = (1 << 0),
|
|
D3DX11_CHANNEL_BLUE = (1 << 1),
|
|
D3DX11_CHANNEL_GREEN = (1 << 2),
|
|
D3DX11_CHANNEL_ALPHA = (1 << 3),
|
|
D3DX11_CHANNEL_LUMINANCE = (1 << 4),
|
|
} D3DX11_CHANNEL_FLAG;
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_IMAGE_FILE_FORMAT:
|
|
// ---------------------
|
|
// This enum is used to describe supported image file formats.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum D3DX11_IMAGE_FILE_FORMAT
|
|
{
|
|
D3DX11_IFF_BMP = 0,
|
|
D3DX11_IFF_JPG = 1,
|
|
D3DX11_IFF_PNG = 3,
|
|
D3DX11_IFF_DDS = 4,
|
|
D3DX11_IFF_TIFF = 10,
|
|
D3DX11_IFF_GIF = 11,
|
|
D3DX11_IFF_WMP = 12,
|
|
D3DX11_IFF_FORCE_DWORD = 0x7fffffff
|
|
|
|
} D3DX11_IMAGE_FILE_FORMAT;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_SAVE_TEXTURE_FLAG:
|
|
// ---------------------
|
|
// This enum is used to support texture saving options.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum D3DX11_SAVE_TEXTURE_FLAG
|
|
{
|
|
D3DX11_STF_USEINPUTBLOB = 0x0001,
|
|
} D3DX11_SAVE_TEXTURE_FLAG;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_IMAGE_INFO:
|
|
// ---------------
|
|
// This structure is used to return a rough description of what the
|
|
// the original contents of an image file looked like.
|
|
//
|
|
// Width
|
|
// Width of original image in pixels
|
|
// Height
|
|
// Height of original image in pixels
|
|
// Depth
|
|
// Depth of original image in pixels
|
|
// ArraySize
|
|
// Array size in textures
|
|
// MipLevels
|
|
// Number of mip levels in original image
|
|
// MiscFlags
|
|
// Miscellaneous flags
|
|
// Format
|
|
// D3D format which most closely describes the data in original image
|
|
// ResourceDimension
|
|
// D3D11_RESOURCE_DIMENSION representing the dimension of texture stored in the file.
|
|
// D3D11_RESOURCE_DIMENSION_TEXTURE1D, 2D, 3D
|
|
// ImageFileFormat
|
|
// D3DX11_IMAGE_FILE_FORMAT representing the format of the image file.
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef struct D3DX11_IMAGE_INFO
|
|
{
|
|
UINT Width;
|
|
UINT Height;
|
|
UINT Depth;
|
|
UINT ArraySize;
|
|
UINT MipLevels;
|
|
UINT MiscFlags;
|
|
DXGI_FORMAT Format;
|
|
D3D11_RESOURCE_DIMENSION ResourceDimension;
|
|
D3DX11_IMAGE_FILE_FORMAT ImageFileFormat;
|
|
} D3DX11_IMAGE_INFO;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif //__cplusplus
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// Image File APIs ///////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_IMAGE_LOAD_INFO:
|
|
// ---------------
|
|
// This structure can be optionally passed in to texture loader APIs to
|
|
// control how textures get loaded. Pass in D3DX11_DEFAULT for any of these
|
|
// to have D3DX automatically pick defaults based on the source file.
|
|
//
|
|
// Width
|
|
// Rescale texture to Width texels wide
|
|
// Height
|
|
// Rescale texture to Height texels high
|
|
// Depth
|
|
// Rescale texture to Depth texels deep
|
|
// FirstMipLevel
|
|
// First mip level to load
|
|
// MipLevels
|
|
// Number of mip levels to load after the first level
|
|
// Usage
|
|
// D3D11_USAGE flag for the new texture
|
|
// BindFlags
|
|
// D3D11 Bind flags for the new texture
|
|
// CpuAccessFlags
|
|
// D3D11 CPU Access flags for the new texture
|
|
// MiscFlags
|
|
// Reserved. Must be 0
|
|
// Format
|
|
// Resample texture to the specified format
|
|
// Filter
|
|
// Filter the texture using the specified filter (only when resampling)
|
|
// MipFilter
|
|
// Filter the texture mip levels using the specified filter (only if
|
|
// generating mips)
|
|
// pSrcInfo
|
|
// (optional) pointer to a D3DX11_IMAGE_INFO structure that will get
|
|
// populated with source image information
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
typedef struct D3DX11_IMAGE_LOAD_INFO
|
|
{
|
|
UINT Width;
|
|
UINT Height;
|
|
UINT Depth;
|
|
UINT FirstMipLevel;
|
|
UINT MipLevels;
|
|
D3D11_USAGE Usage;
|
|
UINT BindFlags;
|
|
UINT CpuAccessFlags;
|
|
UINT MiscFlags;
|
|
DXGI_FORMAT Format;
|
|
UINT Filter;
|
|
UINT MipFilter;
|
|
D3DX11_IMAGE_INFO* pSrcInfo;
|
|
|
|
#ifdef __cplusplus
|
|
D3DX11_IMAGE_LOAD_INFO()
|
|
{
|
|
Width = D3DX11_DEFAULT;
|
|
Height = D3DX11_DEFAULT;
|
|
Depth = D3DX11_DEFAULT;
|
|
FirstMipLevel = D3DX11_DEFAULT;
|
|
MipLevels = D3DX11_DEFAULT;
|
|
Usage = (D3D11_USAGE) D3DX11_DEFAULT;
|
|
BindFlags = D3DX11_DEFAULT;
|
|
CpuAccessFlags = D3DX11_DEFAULT;
|
|
MiscFlags = D3DX11_DEFAULT;
|
|
Format = DXGI_FORMAT_FROM_FILE;
|
|
Filter = D3DX11_DEFAULT;
|
|
MipFilter = D3DX11_DEFAULT;
|
|
pSrcInfo = NULL;
|
|
}
|
|
#endif
|
|
|
|
} D3DX11_IMAGE_LOAD_INFO;
|
|
|
|
//-------------------------------------------------------------------------------
|
|
// GetImageInfoFromFile/Resource/Memory:
|
|
// ------------------------------
|
|
// Fills in a D3DX11_IMAGE_INFO struct with information about an image file.
|
|
//
|
|
// Parameters:
|
|
// pSrcFile
|
|
// File name of the source image.
|
|
// pSrcModule
|
|
// Module where resource is located, or NULL for module associated
|
|
// with image the os used to create the current process.
|
|
// pSrcResource
|
|
// Resource name.
|
|
// pSrcData
|
|
// Pointer to file in memory.
|
|
// SrcDataSize
|
|
// Size in bytes of file in memory.
|
|
// pPump
|
|
// Optional pointer to a thread pump object to use.
|
|
// pSrcInfo
|
|
// Pointer to a D3DX11_IMAGE_INFO structure to be filled in with the
|
|
// description of the data in the source image file.
|
|
// pHResult
|
|
// Pointer to a memory location to receive the return value upon completion.
|
|
// Maybe NULL if not needed.
|
|
// If pPump != NULL, pHResult must be a valid memory location until the
|
|
// the asynchronous execution completes.
|
|
//-------------------------------------------------------------------------------
|
|
|
|
HRESULT WINAPI
|
|
D3DX11GetImageInfoFromFileA(
|
|
LPCSTR pSrcFile,
|
|
ID3DX11ThreadPump* pPump,
|
|
D3DX11_IMAGE_INFO* pSrcInfo,
|
|
HRESULT* pHResult);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11GetImageInfoFromFileW(
|
|
LPCWSTR pSrcFile,
|
|
ID3DX11ThreadPump* pPump,
|
|
D3DX11_IMAGE_INFO* pSrcInfo,
|
|
HRESULT* pHResult);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DX11GetImageInfoFromFile D3DX11GetImageInfoFromFileW
|
|
#else
|
|
#define D3DX11GetImageInfoFromFile D3DX11GetImageInfoFromFileA
|
|
#endif
|
|
|
|
|
|
HRESULT WINAPI
|
|
D3DX11GetImageInfoFromResourceA(
|
|
HMODULE hSrcModule,
|
|
LPCSTR pSrcResource,
|
|
ID3DX11ThreadPump* pPump,
|
|
D3DX11_IMAGE_INFO* pSrcInfo,
|
|
HRESULT* pHResult);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11GetImageInfoFromResourceW(
|
|
HMODULE hSrcModule,
|
|
LPCWSTR pSrcResource,
|
|
ID3DX11ThreadPump* pPump,
|
|
D3DX11_IMAGE_INFO* pSrcInfo,
|
|
HRESULT* pHResult);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DX11GetImageInfoFromResource D3DX11GetImageInfoFromResourceW
|
|
#else
|
|
#define D3DX11GetImageInfoFromResource D3DX11GetImageInfoFromResourceA
|
|
#endif
|
|
|
|
|
|
HRESULT WINAPI
|
|
D3DX11GetImageInfoFromMemory(
|
|
LPCVOID pSrcData,
|
|
SIZE_T SrcDataSize,
|
|
ID3DX11ThreadPump* pPump,
|
|
D3DX11_IMAGE_INFO* pSrcInfo,
|
|
HRESULT* pHResult);
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// Create/Save Texture APIs //////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11CreateTextureFromFile/Resource/Memory:
|
|
// D3DX11CreateShaderResourceViewFromFile/Resource/Memory:
|
|
// -----------------------------------
|
|
// Create a texture object from a file or resource.
|
|
//
|
|
// Parameters:
|
|
//
|
|
// pDevice
|
|
// The D3D device with which the texture is going to be used.
|
|
// pSrcFile
|
|
// File name.
|
|
// hSrcModule
|
|
// Module handle. if NULL, current module will be used.
|
|
// pSrcResource
|
|
// Resource name in module
|
|
// pvSrcData
|
|
// Pointer to file in memory.
|
|
// SrcDataSize
|
|
// Size in bytes of file in memory.
|
|
// pLoadInfo
|
|
// Optional pointer to a D3DX11_IMAGE_LOAD_INFO structure that
|
|
// contains additional loader parameters.
|
|
// pPump
|
|
// Optional pointer to a thread pump object to use.
|
|
// ppTexture
|
|
// [out] Created texture object.
|
|
// ppShaderResourceView
|
|
// [out] Shader resource view object created.
|
|
// pHResult
|
|
// Pointer to a memory location to receive the return value upon completion.
|
|
// Maybe NULL if not needed.
|
|
// If pPump != NULL, pHResult must be a valid memory location until the
|
|
// the asynchronous execution completes.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
// FromFile
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateShaderResourceViewFromFileA(
|
|
ID3D11Device* pDevice,
|
|
LPCSTR pSrcFile,
|
|
D3DX11_IMAGE_LOAD_INFO *pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11ShaderResourceView** ppShaderResourceView,
|
|
HRESULT* pHResult);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateShaderResourceViewFromFileW(
|
|
ID3D11Device* pDevice,
|
|
LPCWSTR pSrcFile,
|
|
D3DX11_IMAGE_LOAD_INFO *pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11ShaderResourceView** ppShaderResourceView,
|
|
HRESULT* pHResult);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DX11CreateShaderResourceViewFromFile D3DX11CreateShaderResourceViewFromFileW
|
|
#else
|
|
#define D3DX11CreateShaderResourceViewFromFile D3DX11CreateShaderResourceViewFromFileA
|
|
#endif
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateTextureFromFileA(
|
|
ID3D11Device* pDevice,
|
|
LPCSTR pSrcFile,
|
|
D3DX11_IMAGE_LOAD_INFO *pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11Resource** ppTexture,
|
|
HRESULT* pHResult);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateTextureFromFileW(
|
|
ID3D11Device* pDevice,
|
|
LPCWSTR pSrcFile,
|
|
D3DX11_IMAGE_LOAD_INFO *pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11Resource** ppTexture,
|
|
HRESULT* pHResult);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DX11CreateTextureFromFile D3DX11CreateTextureFromFileW
|
|
#else
|
|
#define D3DX11CreateTextureFromFile D3DX11CreateTextureFromFileA
|
|
#endif
|
|
|
|
|
|
// FromResource (resources in dll/exes)
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateShaderResourceViewFromResourceA(
|
|
ID3D11Device* pDevice,
|
|
HMODULE hSrcModule,
|
|
LPCSTR pSrcResource,
|
|
D3DX11_IMAGE_LOAD_INFO* pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11ShaderResourceView** ppShaderResourceView,
|
|
HRESULT* pHResult);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateShaderResourceViewFromResourceW(
|
|
ID3D11Device* pDevice,
|
|
HMODULE hSrcModule,
|
|
LPCWSTR pSrcResource,
|
|
D3DX11_IMAGE_LOAD_INFO* pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11ShaderResourceView** ppShaderResourceView,
|
|
HRESULT* pHResult);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DX11CreateShaderResourceViewFromResource D3DX11CreateShaderResourceViewFromResourceW
|
|
#else
|
|
#define D3DX11CreateShaderResourceViewFromResource D3DX11CreateShaderResourceViewFromResourceA
|
|
#endif
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateTextureFromResourceA(
|
|
ID3D11Device* pDevice,
|
|
HMODULE hSrcModule,
|
|
LPCSTR pSrcResource,
|
|
D3DX11_IMAGE_LOAD_INFO *pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11Resource** ppTexture,
|
|
HRESULT* pHResult);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateTextureFromResourceW(
|
|
ID3D11Device* pDevice,
|
|
HMODULE hSrcModule,
|
|
LPCWSTR pSrcResource,
|
|
D3DX11_IMAGE_LOAD_INFO* pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11Resource** ppTexture,
|
|
HRESULT* pHResult);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DX11CreateTextureFromResource D3DX11CreateTextureFromResourceW
|
|
#else
|
|
#define D3DX11CreateTextureFromResource D3DX11CreateTextureFromResourceA
|
|
#endif
|
|
|
|
|
|
// FromFileInMemory
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateShaderResourceViewFromMemory(
|
|
ID3D11Device* pDevice,
|
|
LPCVOID pSrcData,
|
|
SIZE_T SrcDataSize,
|
|
D3DX11_IMAGE_LOAD_INFO* pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11ShaderResourceView** ppShaderResourceView,
|
|
HRESULT* pHResult);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11CreateTextureFromMemory(
|
|
ID3D11Device* pDevice,
|
|
LPCVOID pSrcData,
|
|
SIZE_T SrcDataSize,
|
|
D3DX11_IMAGE_LOAD_INFO* pLoadInfo,
|
|
ID3DX11ThreadPump* pPump,
|
|
ID3D11Resource** ppTexture,
|
|
HRESULT* pHResult);
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// Misc Texture APIs /////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11_TEXTURE_LOAD_INFO:
|
|
// ------------------------
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef struct _D3DX11_TEXTURE_LOAD_INFO
|
|
{
|
|
D3D11_BOX *pSrcBox;
|
|
D3D11_BOX *pDstBox;
|
|
UINT SrcFirstMip;
|
|
UINT DstFirstMip;
|
|
UINT NumMips;
|
|
UINT SrcFirstElement;
|
|
UINT DstFirstElement;
|
|
UINT NumElements;
|
|
UINT Filter;
|
|
UINT MipFilter;
|
|
|
|
#ifdef __cplusplus
|
|
_D3DX11_TEXTURE_LOAD_INFO()
|
|
{
|
|
pSrcBox = NULL;
|
|
pDstBox = NULL;
|
|
SrcFirstMip = 0;
|
|
DstFirstMip = 0;
|
|
NumMips = D3DX11_DEFAULT;
|
|
SrcFirstElement = 0;
|
|
DstFirstElement = 0;
|
|
NumElements = D3DX11_DEFAULT;
|
|
Filter = D3DX11_DEFAULT;
|
|
MipFilter = D3DX11_DEFAULT;
|
|
}
|
|
#endif
|
|
|
|
} D3DX11_TEXTURE_LOAD_INFO;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11LoadTextureFromTexture:
|
|
// ----------------------------
|
|
// Load a texture from a texture.
|
|
//
|
|
// Parameters:
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
HRESULT WINAPI
|
|
D3DX11LoadTextureFromTexture(
|
|
ID3D11DeviceContext *pContext,
|
|
ID3D11Resource *pSrcTexture,
|
|
D3DX11_TEXTURE_LOAD_INFO *pLoadInfo,
|
|
ID3D11Resource *pDstTexture);
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11FilterTexture:
|
|
// ------------------
|
|
// Filters mipmaps levels of a texture.
|
|
//
|
|
// Parameters:
|
|
// pBaseTexture
|
|
// The texture object to be filtered
|
|
// SrcLevel
|
|
// The level whose image is used to generate the subsequent levels.
|
|
// MipFilter
|
|
// D3DX11_FILTER flags controlling how each miplevel is filtered.
|
|
// Or D3DX11_DEFAULT for D3DX11_FILTER_BOX,
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
HRESULT WINAPI
|
|
D3DX11FilterTexture(
|
|
ID3D11DeviceContext *pContext,
|
|
ID3D11Resource *pTexture,
|
|
UINT SrcLevel,
|
|
UINT MipFilter);
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11SaveTextureToFile:
|
|
// ----------------------
|
|
// Save a texture to a file.
|
|
//
|
|
// Parameters:
|
|
// pDestFile
|
|
// File name of the destination file
|
|
// DestFormat
|
|
// D3DX11_IMAGE_FILE_FORMAT specifying file format to use when saving.
|
|
// pSrcTexture
|
|
// Source texture, containing the image to be saved
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
HRESULT WINAPI
|
|
D3DX11SaveTextureToFileA(
|
|
ID3D11DeviceContext *pContext,
|
|
ID3D11Resource *pSrcTexture,
|
|
D3DX11_IMAGE_FILE_FORMAT DestFormat,
|
|
LPCSTR pDestFile);
|
|
|
|
HRESULT WINAPI
|
|
D3DX11SaveTextureToFileW(
|
|
ID3D11DeviceContext *pContext,
|
|
ID3D11Resource *pSrcTexture,
|
|
D3DX11_IMAGE_FILE_FORMAT DestFormat,
|
|
LPCWSTR pDestFile);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DX11SaveTextureToFile D3DX11SaveTextureToFileW
|
|
#else
|
|
#define D3DX11SaveTextureToFile D3DX11SaveTextureToFileA
|
|
#endif
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11SaveTextureToMemory:
|
|
// ----------------------
|
|
// Save a texture to a blob.
|
|
//
|
|
// Parameters:
|
|
// pSrcTexture
|
|
// Source texture, containing the image to be saved
|
|
// DestFormat
|
|
// D3DX11_IMAGE_FILE_FORMAT specifying file format to use when saving.
|
|
// ppDestBuf
|
|
// address of a d3dxbuffer pointer to return the image data
|
|
// Flags
|
|
// optional flags
|
|
//----------------------------------------------------------------------------
|
|
|
|
HRESULT WINAPI
|
|
D3DX11SaveTextureToMemory(
|
|
ID3D11DeviceContext *pContext,
|
|
ID3D11Resource* pSrcTexture,
|
|
D3DX11_IMAGE_FILE_FORMAT DestFormat,
|
|
ID3D10Blob** ppDestBuf,
|
|
UINT Flags);
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11ComputeNormalMap:
|
|
// ---------------------
|
|
// Converts a height map into a normal map. The (x,y,z) components of each
|
|
// normal are mapped to the (r,g,b) channels of the output texture.
|
|
//
|
|
// Parameters
|
|
// pSrcTexture
|
|
// Pointer to the source heightmap texture
|
|
// Flags
|
|
// D3DX11_NORMALMAP flags
|
|
// Channel
|
|
// D3DX11_CHANNEL specifying source of height information
|
|
// Amplitude
|
|
// The constant value which the height information is multiplied by.
|
|
// pDestTexture
|
|
// Pointer to the destination texture
|
|
//---------------------------------------------------------------------------
|
|
|
|
HRESULT WINAPI
|
|
D3DX11ComputeNormalMap(
|
|
ID3D11DeviceContext *pContext,
|
|
ID3D11Texture2D *pSrcTexture,
|
|
UINT Flags,
|
|
UINT Channel,
|
|
FLOAT Amplitude,
|
|
ID3D11Texture2D *pDestTexture);
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DX11SHProjectCubeMap:
|
|
// ----------------------
|
|
// Projects a function represented in a cube map into spherical harmonics.
|
|
//
|
|
// Parameters:
|
|
// Order
|
|
// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
|
|
// pCubeMap
|
|
// CubeMap that is going to be projected into spherical harmonics
|
|
// pROut
|
|
// Output SH vector for Red.
|
|
// pGOut
|
|
// Output SH vector for Green
|
|
// pBOut
|
|
// Output SH vector for Blue
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
HRESULT WINAPI
|
|
D3DX11SHProjectCubeMap(
|
|
ID3D11DeviceContext *pContext,
|
|
__in_range(2,6) UINT Order,
|
|
ID3D11Texture2D *pCubeMap,
|
|
__out_ecount(Order*Order) FLOAT *pROut,
|
|
__out_ecount_opt(Order*Order) FLOAT *pGOut,
|
|
__out_ecount_opt(Order*Order) FLOAT *pBOut);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif //__cplusplus
|
|
|
|
#endif //__D3DX11TEX_H__
|
|
|