//////////////////////////////////////////////////////////////////////////////
 
//
 
//  Copyright (C) Microsoft Corporation.  All Rights Reserved.
 
//
 
//  File:       d3dx10tex.h
 
//  Content:    D3DX10 texturing APIs
 
//
 
//////////////////////////////////////////////////////////////////////////////
 
 
 
#include "d3dx10.h"
 
 
 
#ifndef __D3DX10TEX_H__
 
#define __D3DX10TEX_H__
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_FILTER flags:
 
// ------------------
 
//
 
// A valid filter must contain one of these values:
 
//
 
//  D3DX10_FILTER_NONE
 
//      No scaling or filtering will take place.  Pixels outside the bounds
 
//      of the source image are assumed to be transparent black.
 
//  D3DX10_FILTER_POINT
 
//      Each destination pixel is computed by sampling the nearest pixel
 
//      from the source image.
 
//  D3DX10_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.
 
//  D3DX10_FILTER_TRIANGLE
 
//      Every pixel in the source image contributes equally to the
 
//      destination image.  This is the slowest of all the filters.
 
//  D3DX10_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:
 
//
 
//  D3DX10_FILTER_MIRROR_U
 
//      Indicates that pixels off the edge of the texture on the U-axis
 
//      should be mirrored, not wraped.
 
//  D3DX10_FILTER_MIRROR_V
 
//      Indicates that pixels off the edge of the texture on the V-axis
 
//      should be mirrored, not wraped.
 
//  D3DX10_FILTER_MIRROR_W
 
//      Indicates that pixels off the edge of the texture on the W-axis
 
//      should be mirrored, not wraped.
 
//  D3DX10_FILTER_MIRROR
 
//      Same as specifying D3DX10_FILTER_MIRROR_U | D3DX10_FILTER_MIRROR_V |
 
//      D3DX10_FILTER_MIRROR_V
 
//  D3DX10_FILTER_DITHER
 
//      Dithers the resulting image using a 4x4 order dither pattern.
 
//  D3DX10_FILTER_SRGB_IN
 
//      Denotes that the input data is in sRGB (gamma 2.2) colorspace.
 
//  D3DX10_FILTER_SRGB_OUT
 
//      Denotes that the output data is in sRGB (gamma 2.2) colorspace.
 
//  D3DX10_FILTER_SRGB
 
//      Same as specifying D3DX10_FILTER_SRGB_IN | D3DX10_FILTER_SRGB_OUT
 
//
 
//----------------------------------------------------------------------------
 
 
 
typedef enum D3DX10_FILTER_FLAG
 
{
 
    D3DX10_FILTER_NONE            =   (1 << 0),
 
    D3DX10_FILTER_POINT           =   (2 << 0),
 
    D3DX10_FILTER_LINEAR          =   (3 << 0),
 
    D3DX10_FILTER_TRIANGLE        =   (4 << 0),
 
    D3DX10_FILTER_BOX             =   (5 << 0),
 
 
 
    D3DX10_FILTER_MIRROR_U        =   (1 << 16),
 
    D3DX10_FILTER_MIRROR_V        =   (2 << 16),
 
    D3DX10_FILTER_MIRROR_W        =   (4 << 16),
 
    D3DX10_FILTER_MIRROR          =   (7 << 16),
 
 
 
    D3DX10_FILTER_DITHER          =   (1 << 19),
 
    D3DX10_FILTER_DITHER_DIFFUSION=   (2 << 19),
 
 
 
    D3DX10_FILTER_SRGB_IN         =   (1 << 21),
 
    D3DX10_FILTER_SRGB_OUT        =   (2 << 21),
 
    D3DX10_FILTER_SRGB            =   (3 << 21),
 
} D3DX10_FILTER_FLAG;
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_NORMALMAP flags:
 
// ---------------------
 
// These flags are used to control how D3DX10ComputeNormalMap generates normal
 
// maps.  Any number of these flags may be OR'd together in any combination.
 
//
 
//  D3DX10_NORMALMAP_MIRROR_U
 
//      Indicates that pixels off the edge of the texture on the U-axis
 
//      should be mirrored, not wraped.
 
//  D3DX10_NORMALMAP_MIRROR_V
 
//      Indicates that pixels off the edge of the texture on the V-axis
 
//      should be mirrored, not wraped.
 
//  D3DX10_NORMALMAP_MIRROR
 
//      Same as specifying D3DX10_NORMALMAP_MIRROR_U | D3DX10_NORMALMAP_MIRROR_V
 
//  D3DX10_NORMALMAP_INVERTSIGN
 
//      Inverts the direction of each normal 
 
//  D3DX10_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 D3DX10_NORMALMAP_FLAG
 
{
 
    D3DX10_NORMALMAP_MIRROR_U          =   (1 << 16),
 
    D3DX10_NORMALMAP_MIRROR_V          =   (2 << 16),
 
    D3DX10_NORMALMAP_MIRROR            =   (3 << 16),
 
    D3DX10_NORMALMAP_INVERTSIGN        =   (8 << 16),
 
    D3DX10_NORMALMAP_COMPUTE_OCCLUSION =   (16 << 16),
 
} D3DX10_NORMALMAP_FLAG;
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_CHANNEL flags:
 
// -------------------
 
// These flags are used by functions which operate on or more channels
 
// in a texture.
 
//
 
// D3DX10_CHANNEL_RED
 
//     Indicates the red channel should be used
 
// D3DX10_CHANNEL_BLUE
 
//     Indicates the blue channel should be used
 
// D3DX10_CHANNEL_GREEN
 
//     Indicates the green channel should be used
 
// D3DX10_CHANNEL_ALPHA
 
//     Indicates the alpha channel should be used
 
// D3DX10_CHANNEL_LUMINANCE
 
//     Indicates the luminaces of the red green and blue channels should be 
 
//     used.
 
//
 
//----------------------------------------------------------------------------
 
 
 
typedef enum D3DX10_CHANNEL_FLAG
 
{
 
    D3DX10_CHANNEL_RED           =    (1 << 0),
 
    D3DX10_CHANNEL_BLUE          =    (1 << 1),
 
    D3DX10_CHANNEL_GREEN         =    (1 << 2),
 
    D3DX10_CHANNEL_ALPHA         =    (1 << 3),
 
    D3DX10_CHANNEL_LUMINANCE     =    (1 << 4),
 
} D3DX10_CHANNEL_FLAG;
 
 
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_IMAGE_FILE_FORMAT:
 
// ---------------------
 
// This enum is used to describe supported image file formats.
 
//
 
//----------------------------------------------------------------------------
 
 
 
typedef enum D3DX10_IMAGE_FILE_FORMAT
 
{
 
    D3DX10_IFF_BMP         = 0,
 
    D3DX10_IFF_JPG         = 1,
 
    D3DX10_IFF_PNG         = 3,
 
    D3DX10_IFF_DDS         = 4,
 
    D3DX10_IFF_TIFF               = 10,
 
    D3DX10_IFF_GIF                = 11,
 
    D3DX10_IFF_WMP                = 12,
 
    D3DX10_IFF_FORCE_DWORD = 0x7fffffff
 
 
 
} D3DX10_IMAGE_FILE_FORMAT;
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_SAVE_TEXTURE_FLAG:
 
// ---------------------
 
// This enum is used to support texture saving options.
 
//
 
//----------------------------------------------------------------------------
 
 
 
typedef enum D3DX10_SAVE_TEXTURE_FLAG
 
{
 
    D3DX10_STF_USEINPUTBLOB      = 0x0001,
 
} D3DX10_SAVE_TEXTURE_FLAG;
 
 
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_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
 
//      D3D10_RESOURCE_DIMENSION representing the dimension of texture stored in the file.
 
//      D3D10_RESOURCE_DIMENSION_TEXTURE1D, 2D, 3D
 
//  ImageFileFormat
 
//      D3DX10_IMAGE_FILE_FORMAT representing the format of the image file.
 
//----------------------------------------------------------------------------
 
 
 
typedef struct D3DX10_IMAGE_INFO
 
{
 
    UINT                        Width;
 
    UINT                        Height;
 
    UINT                        Depth;
 
    UINT                        ArraySize;
 
    UINT                        MipLevels;
 
    UINT                        MiscFlags;
 
    DXGI_FORMAT                 Format;
 
    D3D10_RESOURCE_DIMENSION    ResourceDimension;
 
    D3DX10_IMAGE_FILE_FORMAT    ImageFileFormat;
 
} D3DX10_IMAGE_INFO;
 
 
 
 
 
 
 
 
 
 
 
#ifdef __cplusplus
 
extern "C" {
 
#endif //__cplusplus
 
 
 
 
 
 
 
//////////////////////////////////////////////////////////////////////////////
 
// Image File APIs ///////////////////////////////////////////////////////////
 
//////////////////////////////////////////////////////////////////////////////
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_IMAGE_LOAD_INFO:
 
// ---------------
 
// This structure can be optionally passed in to texture loader APIs to 
 
// control how textures get loaded. Pass in D3DX10_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
 
//      D3D10_USAGE flag for the new texture
 
//  BindFlags
 
//      D3D10 Bind flags for the new texture
 
//  CpuAccessFlags
 
//      D3D10 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 D3DX10_IMAGE_INFO structure that will get 
 
//      populated with source image information
 
//----------------------------------------------------------------------------
 
 
 
 
 
typedef struct D3DX10_IMAGE_LOAD_INFO
 
{
 
    UINT                       Width;
 
    UINT                       Height;
 
    UINT                       Depth;
 
    UINT                       FirstMipLevel;
 
    UINT                       MipLevels;
 
    D3D10_USAGE                Usage;
 
    UINT                       BindFlags;
 
    UINT                       CpuAccessFlags;
 
    UINT                       MiscFlags;
 
    DXGI_FORMAT                Format;
 
    UINT                       Filter;
 
    UINT                       MipFilter;
 
    D3DX10_IMAGE_INFO*         pSrcInfo;
 
    
 
#ifdef __cplusplus
 
    D3DX10_IMAGE_LOAD_INFO()
 
    {
 
        Width = D3DX10_DEFAULT;
 
        Height = D3DX10_DEFAULT;
 
        Depth = D3DX10_DEFAULT;
 
        FirstMipLevel = D3DX10_DEFAULT;
 
        MipLevels = D3DX10_DEFAULT;
 
        Usage = (D3D10_USAGE) D3DX10_DEFAULT;
 
        BindFlags = D3DX10_DEFAULT;
 
        CpuAccessFlags = D3DX10_DEFAULT;
 
        MiscFlags = D3DX10_DEFAULT;
 
        Format = DXGI_FORMAT_FROM_FILE;
 
        Filter = D3DX10_DEFAULT;
 
        MipFilter = D3DX10_DEFAULT;
 
        pSrcInfo = NULL;
 
    }  
 
#endif
 
 
 
} D3DX10_IMAGE_LOAD_INFO;
 
 
 
//-------------------------------------------------------------------------------
 
// GetImageInfoFromFile/Resource/Memory:
 
// ------------------------------
 
// Fills in a D3DX10_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 D3DX10_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
 
    D3DX10GetImageInfoFromFileA(
 
        LPCSTR                    pSrcFile,
 
        ID3DX10ThreadPump*        pPump,
 
        D3DX10_IMAGE_INFO*        pSrcInfo,
 
        HRESULT*                  pHResult);
 
 
 
HRESULT WINAPI
 
    D3DX10GetImageInfoFromFileW(
 
        LPCWSTR                   pSrcFile,
 
        ID3DX10ThreadPump*        pPump,
 
        D3DX10_IMAGE_INFO*        pSrcInfo,
 
        HRESULT*                  pHResult);
 
 
 
#ifdef UNICODE
 
#define D3DX10GetImageInfoFromFile D3DX10GetImageInfoFromFileW
 
#else
 
#define D3DX10GetImageInfoFromFile D3DX10GetImageInfoFromFileA
 
#endif
 
 
 
 
 
HRESULT WINAPI
 
    D3DX10GetImageInfoFromResourceA(
 
        HMODULE                   hSrcModule,
 
        LPCSTR                    pSrcResource,
 
        ID3DX10ThreadPump*        pPump,
 
        D3DX10_IMAGE_INFO*        pSrcInfo,
 
        HRESULT*                  pHResult);
 
 
 
HRESULT WINAPI
 
    D3DX10GetImageInfoFromResourceW(
 
        HMODULE                   hSrcModule,
 
        LPCWSTR                   pSrcResource,
 
        ID3DX10ThreadPump*        pPump,
 
        D3DX10_IMAGE_INFO*        pSrcInfo,
 
        HRESULT*                  pHResult);
 
 
 
#ifdef UNICODE
 
#define D3DX10GetImageInfoFromResource D3DX10GetImageInfoFromResourceW
 
#else
 
#define D3DX10GetImageInfoFromResource D3DX10GetImageInfoFromResourceA
 
#endif
 
 
 
 
 
HRESULT WINAPI
 
    D3DX10GetImageInfoFromMemory(
 
        LPCVOID                   pSrcData,
 
        SIZE_T                    SrcDataSize,
 
        ID3DX10ThreadPump*        pPump,
 
        D3DX10_IMAGE_INFO*        pSrcInfo,
 
        HRESULT*                  pHResult);
 
 
 
 
 
//////////////////////////////////////////////////////////////////////////////
 
// Create/Save Texture APIs //////////////////////////////////////////////////
 
//////////////////////////////////////////////////////////////////////////////
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10CreateTextureFromFile/Resource/Memory:
 
// D3DX10CreateShaderResourceViewFromFile/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 D3DX10_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
 
    D3DX10CreateShaderResourceViewFromFileA(
 
        ID3D10Device*               pDevice,
 
        LPCSTR                      pSrcFile,
 
        D3DX10_IMAGE_LOAD_INFO      *pLoadInfo,
 
        ID3DX10ThreadPump*          pPump,
 
        ID3D10ShaderResourceView**  ppShaderResourceView,
 
        HRESULT*                    pHResult);
 
 
 
HRESULT WINAPI
 
    D3DX10CreateShaderResourceViewFromFileW(
 
        ID3D10Device*               pDevice,
 
        LPCWSTR                     pSrcFile,
 
        D3DX10_IMAGE_LOAD_INFO      *pLoadInfo,
 
        ID3DX10ThreadPump*          pPump,
 
        ID3D10ShaderResourceView**  ppShaderResourceView,
 
        HRESULT*                    pHResult);
 
 
 
#ifdef UNICODE
 
#define D3DX10CreateShaderResourceViewFromFile D3DX10CreateShaderResourceViewFromFileW
 
#else
 
#define D3DX10CreateShaderResourceViewFromFile D3DX10CreateShaderResourceViewFromFileA
 
#endif
 
 
 
HRESULT WINAPI
 
    D3DX10CreateTextureFromFileA(
 
        ID3D10Device*               pDevice,
 
        LPCSTR                      pSrcFile,
 
        D3DX10_IMAGE_LOAD_INFO      *pLoadInfo,
 
        ID3DX10ThreadPump*          pPump,
 
        ID3D10Resource**            ppTexture,
 
        HRESULT*                    pHResult);
 
 
 
HRESULT WINAPI
 
    D3DX10CreateTextureFromFileW(
 
        ID3D10Device*               pDevice,
 
        LPCWSTR                     pSrcFile,
 
        D3DX10_IMAGE_LOAD_INFO      *pLoadInfo,
 
        ID3DX10ThreadPump*          pPump,
 
        ID3D10Resource**            ppTexture,
 
        HRESULT*                    pHResult);
 
 
 
#ifdef UNICODE
 
#define D3DX10CreateTextureFromFile D3DX10CreateTextureFromFileW
 
#else
 
#define D3DX10CreateTextureFromFile D3DX10CreateTextureFromFileA
 
#endif
 
 
 
 
 
// FromResource (resources in dll/exes)
 
 
 
HRESULT WINAPI
 
    D3DX10CreateShaderResourceViewFromResourceA(
 
        ID3D10Device*              pDevice,
 
        HMODULE                    hSrcModule,
 
        LPCSTR                     pSrcResource,
 
        D3DX10_IMAGE_LOAD_INFO*    pLoadInfo,
 
        ID3DX10ThreadPump*         pPump,
 
        ID3D10ShaderResourceView** ppShaderResourceView,
 
        HRESULT*                   pHResult);
 
 
 
HRESULT WINAPI
 
    D3DX10CreateShaderResourceViewFromResourceW(
 
        ID3D10Device*              pDevice,
 
        HMODULE                    hSrcModule,
 
        LPCWSTR                    pSrcResource,
 
        D3DX10_IMAGE_LOAD_INFO*    pLoadInfo,
 
        ID3DX10ThreadPump*         pPump,
 
        ID3D10ShaderResourceView** ppShaderResourceView,
 
        HRESULT*                   pHResult);
 
 
 
#ifdef UNICODE
 
#define D3DX10CreateShaderResourceViewFromResource D3DX10CreateShaderResourceViewFromResourceW
 
#else
 
#define D3DX10CreateShaderResourceViewFromResource D3DX10CreateShaderResourceViewFromResourceA
 
#endif
 
 
 
HRESULT WINAPI
 
    D3DX10CreateTextureFromResourceA(
 
        ID3D10Device*            pDevice,
 
        HMODULE                  hSrcModule,
 
        LPCSTR                   pSrcResource,
 
        D3DX10_IMAGE_LOAD_INFO   *pLoadInfo,  
 
        ID3DX10ThreadPump*       pPump,   
 
        ID3D10Resource**         ppTexture,
 
        HRESULT*                 pHResult);
 
 
 
HRESULT WINAPI
 
    D3DX10CreateTextureFromResourceW(
 
        ID3D10Device*           pDevice,
 
        HMODULE                 hSrcModule,
 
        LPCWSTR                 pSrcResource,
 
        D3DX10_IMAGE_LOAD_INFO* pLoadInfo,
 
        ID3DX10ThreadPump*      pPump,
 
        ID3D10Resource**        ppTexture,
 
        HRESULT*                pHResult);
 
 
 
#ifdef UNICODE
 
#define D3DX10CreateTextureFromResource D3DX10CreateTextureFromResourceW
 
#else
 
#define D3DX10CreateTextureFromResource D3DX10CreateTextureFromResourceA
 
#endif
 
 
 
 
 
// FromFileInMemory
 
 
 
HRESULT WINAPI
 
    D3DX10CreateShaderResourceViewFromMemory(
 
        ID3D10Device*              pDevice,
 
        LPCVOID                    pSrcData,
 
        SIZE_T                     SrcDataSize,
 
        D3DX10_IMAGE_LOAD_INFO*    pLoadInfo,
 
        ID3DX10ThreadPump*         pPump,        
 
        ID3D10ShaderResourceView** ppShaderResourceView,
 
        HRESULT*                   pHResult);
 
 
 
HRESULT WINAPI
 
    D3DX10CreateTextureFromMemory(
 
        ID3D10Device*             pDevice,
 
        LPCVOID                   pSrcData,
 
        SIZE_T                    SrcDataSize,
 
        D3DX10_IMAGE_LOAD_INFO*   pLoadInfo,    
 
        ID3DX10ThreadPump*        pPump,    
 
        ID3D10Resource**          ppTexture,
 
        HRESULT*                  pHResult);
 
 
 
 
 
//////////////////////////////////////////////////////////////////////////////
 
// Misc Texture APIs /////////////////////////////////////////////////////////
 
//////////////////////////////////////////////////////////////////////////////
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10_TEXTURE_LOAD_INFO:
 
// ------------------------
 
//
 
//----------------------------------------------------------------------------
 
 
 
typedef struct _D3DX10_TEXTURE_LOAD_INFO
 
{
 
    D3D10_BOX       *pSrcBox;
 
    D3D10_BOX       *pDstBox;
 
    UINT            SrcFirstMip;
 
    UINT            DstFirstMip;
 
    UINT            NumMips;
 
    UINT            SrcFirstElement;
 
    UINT            DstFirstElement;
 
    UINT            NumElements;
 
    UINT            Filter;
 
    UINT            MipFilter;
 
    
 
#ifdef __cplusplus
 
    _D3DX10_TEXTURE_LOAD_INFO()
 
    {
 
        pSrcBox = NULL;
 
        pDstBox = NULL;
 
        SrcFirstMip = 0;
 
        DstFirstMip = 0;
 
        NumMips = D3DX10_DEFAULT;
 
        SrcFirstElement = 0;
 
        DstFirstElement = 0;
 
        NumElements = D3DX10_DEFAULT;
 
        Filter = D3DX10_DEFAULT;
 
        MipFilter = D3DX10_DEFAULT;
 
    }  
 
#endif
 
 
 
} D3DX10_TEXTURE_LOAD_INFO;
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10LoadTextureFromTexture:
 
// ----------------------------
 
// Load a texture from a texture.
 
//
 
// Parameters:
 
//
 
//----------------------------------------------------------------------------
 
 
 
 
 
HRESULT WINAPI
 
    D3DX10LoadTextureFromTexture(
 
        ID3D10Resource            *pSrcTexture,
 
        D3DX10_TEXTURE_LOAD_INFO  *pLoadInfo,
 
        ID3D10Resource            *pDstTexture);
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10FilterTexture:
 
// ------------------
 
// 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
 
//      D3DX10_FILTER flags controlling how each miplevel is filtered.
 
//      Or D3DX10_DEFAULT for D3DX10_FILTER_BOX,
 
//
 
//----------------------------------------------------------------------------
 
 
 
HRESULT WINAPI
 
    D3DX10FilterTexture(
 
        ID3D10Resource            *pTexture,
 
        UINT                      SrcLevel,
 
        UINT                      MipFilter);
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10SaveTextureToFile:
 
// ----------------------
 
// Save a texture to a file.
 
//
 
// Parameters:
 
//  pDestFile
 
//      File name of the destination file
 
//  DestFormat
 
//      D3DX10_IMAGE_FILE_FORMAT specifying file format to use when saving.
 
//  pSrcTexture
 
//      Source texture, containing the image to be saved
 
//
 
//----------------------------------------------------------------------------
 
 
 
HRESULT WINAPI
 
    D3DX10SaveTextureToFileA(
 
        ID3D10Resource            *pSrcTexture,
 
        D3DX10_IMAGE_FILE_FORMAT    DestFormat,
 
        LPCSTR                    pDestFile);
 
 
 
HRESULT WINAPI
 
    D3DX10SaveTextureToFileW(
 
        ID3D10Resource            *pSrcTexture,
 
        D3DX10_IMAGE_FILE_FORMAT    DestFormat,
 
        LPCWSTR                   pDestFile);
 
 
 
#ifdef UNICODE
 
#define D3DX10SaveTextureToFile D3DX10SaveTextureToFileW
 
#else
 
#define D3DX10SaveTextureToFile D3DX10SaveTextureToFileA
 
#endif
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10SaveTextureToMemory:
 
// ----------------------
 
// Save a texture to a blob.
 
//
 
// Parameters:
 
//  pSrcTexture
 
//      Source texture, containing the image to be saved
 
//  DestFormat
 
//      D3DX10_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
 
    D3DX10SaveTextureToMemory(
 
        ID3D10Resource*            pSrcTexture,
 
        D3DX10_IMAGE_FILE_FORMAT   DestFormat,
 
        LPD3D10BLOB*               ppDestBuf,
 
        UINT                       Flags);
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10ComputeNormalMap:
 
// ---------------------
 
// 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
 
//      D3DX10_NORMALMAP flags
 
//  Channel
 
//      D3DX10_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
 
    D3DX10ComputeNormalMap(
 
        ID3D10Texture2D              *pSrcTexture,
 
        UINT                      Flags,
 
        UINT                      Channel,
 
        FLOAT                     Amplitude,
 
        ID3D10Texture2D              *pDestTexture);
 
 
 
 
 
//----------------------------------------------------------------------------
 
// D3DX10SHProjectCubeMap:
 
// ----------------------
 
//  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
 
    D3DX10SHProjectCubeMap(
 
        __in_range(2,6) UINT                                Order,
 
        ID3D10Texture2D                                    *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 //__D3DX10TEX_H__