Subversion Repositories Games.Chess Giants

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  Copyright (C) Microsoft Corporation.  All Rights Reserved.
  4. //
  5. //  File:       d3dx11tex.h
  6. //  Content:    D3DX11 texturing APIs
  7. //
  8. //////////////////////////////////////////////////////////////////////////////
  9.  
  10. #include "d3dx11.h"
  11.  
  12. #ifndef __D3DX11TEX_H__
  13. #define __D3DX11TEX_H__
  14.  
  15.  
  16. //----------------------------------------------------------------------------
  17. // D3DX11_FILTER flags:
  18. // ------------------
  19. //
  20. // A valid filter must contain one of these values:
  21. //
  22. //  D3DX11_FILTER_NONE
  23. //      No scaling or filtering will take place.  Pixels outside the bounds
  24. //      of the source image are assumed to be transparent black.
  25. //  D3DX11_FILTER_POINT
  26. //      Each destination pixel is computed by sampling the nearest pixel
  27. //      from the source image.
  28. //  D3DX11_FILTER_LINEAR
  29. //      Each destination pixel is computed by linearly interpolating between
  30. //      the nearest pixels in the source image.  This filter works best
  31. //      when the scale on each axis is less than 2.
  32. //  D3DX11_FILTER_TRIANGLE
  33. //      Every pixel in the source image contributes equally to the
  34. //      destination image.  This is the slowest of all the filters.
  35. //  D3DX11_FILTER_BOX
  36. //      Each pixel is computed by averaging a 2x2(x2) box pixels from
  37. //      the source image. Only works when the dimensions of the
  38. //      destination are half those of the source. (as with mip maps)
  39. //
  40. // And can be OR'd with any of these optional flags:
  41. //
  42. //  D3DX11_FILTER_MIRROR_U
  43. //      Indicates that pixels off the edge of the texture on the U-axis
  44. //      should be mirrored, not wraped.
  45. //  D3DX11_FILTER_MIRROR_V
  46. //      Indicates that pixels off the edge of the texture on the V-axis
  47. //      should be mirrored, not wraped.
  48. //  D3DX11_FILTER_MIRROR_W
  49. //      Indicates that pixels off the edge of the texture on the W-axis
  50. //      should be mirrored, not wraped.
  51. //  D3DX11_FILTER_MIRROR
  52. //      Same as specifying D3DX11_FILTER_MIRROR_U | D3DX11_FILTER_MIRROR_V |
  53. //      D3DX11_FILTER_MIRROR_V
  54. //  D3DX11_FILTER_DITHER
  55. //      Dithers the resulting image using a 4x4 order dither pattern.
  56. //  D3DX11_FILTER_SRGB_IN
  57. //      Denotes that the input data is in sRGB (gamma 2.2) colorspace.
  58. //  D3DX11_FILTER_SRGB_OUT
  59. //      Denotes that the output data is in sRGB (gamma 2.2) colorspace.
  60. //  D3DX11_FILTER_SRGB
  61. //      Same as specifying D3DX11_FILTER_SRGB_IN | D3DX11_FILTER_SRGB_OUT
  62. //
  63. //----------------------------------------------------------------------------
  64.  
  65. typedef enum D3DX11_FILTER_FLAG
  66. {
  67.     D3DX11_FILTER_NONE            =   (1 << 0),
  68.     D3DX11_FILTER_POINT           =   (2 << 0),
  69.     D3DX11_FILTER_LINEAR          =   (3 << 0),
  70.     D3DX11_FILTER_TRIANGLE        =   (4 << 0),
  71.     D3DX11_FILTER_BOX             =   (5 << 0),
  72.  
  73.     D3DX11_FILTER_MIRROR_U        =   (1 << 16),
  74.     D3DX11_FILTER_MIRROR_V        =   (2 << 16),
  75.     D3DX11_FILTER_MIRROR_W        =   (4 << 16),
  76.     D3DX11_FILTER_MIRROR          =   (7 << 16),
  77.  
  78.     D3DX11_FILTER_DITHER          =   (1 << 19),
  79.     D3DX11_FILTER_DITHER_DIFFUSION=   (2 << 19),
  80.  
  81.     D3DX11_FILTER_SRGB_IN         =   (1 << 21),
  82.     D3DX11_FILTER_SRGB_OUT        =   (2 << 21),
  83.     D3DX11_FILTER_SRGB            =   (3 << 21),
  84. } D3DX11_FILTER_FLAG;
  85.  
  86. //----------------------------------------------------------------------------
  87. // D3DX11_NORMALMAP flags:
  88. // ---------------------
  89. // These flags are used to control how D3DX11ComputeNormalMap generates normal
  90. // maps.  Any number of these flags may be OR'd together in any combination.
  91. //
  92. //  D3DX11_NORMALMAP_MIRROR_U
  93. //      Indicates that pixels off the edge of the texture on the U-axis
  94. //      should be mirrored, not wraped.
  95. //  D3DX11_NORMALMAP_MIRROR_V
  96. //      Indicates that pixels off the edge of the texture on the V-axis
  97. //      should be mirrored, not wraped.
  98. //  D3DX11_NORMALMAP_MIRROR
  99. //      Same as specifying D3DX11_NORMALMAP_MIRROR_U | D3DX11_NORMALMAP_MIRROR_V
  100. //  D3DX11_NORMALMAP_INVERTSIGN
  101. //      Inverts the direction of each normal
  102. //  D3DX11_NORMALMAP_COMPUTE_OCCLUSION
  103. //      Compute the per pixel Occlusion term and encodes it into the alpha.
  104. //      An Alpha of 1 means that the pixel is not obscured in anyway, and
  105. //      an alpha of 0 would mean that the pixel is completly obscured.
  106. //
  107. //----------------------------------------------------------------------------
  108.  
  109. typedef enum D3DX11_NORMALMAP_FLAG
  110. {
  111.     D3DX11_NORMALMAP_MIRROR_U          =   (1 << 16),
  112.     D3DX11_NORMALMAP_MIRROR_V          =   (2 << 16),
  113.     D3DX11_NORMALMAP_MIRROR            =   (3 << 16),
  114.     D3DX11_NORMALMAP_INVERTSIGN        =   (8 << 16),
  115.     D3DX11_NORMALMAP_COMPUTE_OCCLUSION =   (16 << 16),
  116. } D3DX11_NORMALMAP_FLAG;
  117.  
  118. //----------------------------------------------------------------------------
  119. // D3DX11_CHANNEL flags:
  120. // -------------------
  121. // These flags are used by functions which operate on or more channels
  122. // in a texture.
  123. //
  124. // D3DX11_CHANNEL_RED
  125. //     Indicates the red channel should be used
  126. // D3DX11_CHANNEL_BLUE
  127. //     Indicates the blue channel should be used
  128. // D3DX11_CHANNEL_GREEN
  129. //     Indicates the green channel should be used
  130. // D3DX11_CHANNEL_ALPHA
  131. //     Indicates the alpha channel should be used
  132. // D3DX11_CHANNEL_LUMINANCE
  133. //     Indicates the luminaces of the red green and blue channels should be
  134. //     used.
  135. //
  136. //----------------------------------------------------------------------------
  137.  
  138. typedef enum D3DX11_CHANNEL_FLAG
  139. {
  140.     D3DX11_CHANNEL_RED           =    (1 << 0),
  141.     D3DX11_CHANNEL_BLUE          =    (1 << 1),
  142.     D3DX11_CHANNEL_GREEN         =    (1 << 2),
  143.     D3DX11_CHANNEL_ALPHA         =    (1 << 3),
  144.     D3DX11_CHANNEL_LUMINANCE     =    (1 << 4),
  145. } D3DX11_CHANNEL_FLAG;
  146.  
  147.  
  148.  
  149. //----------------------------------------------------------------------------
  150. // D3DX11_IMAGE_FILE_FORMAT:
  151. // ---------------------
  152. // This enum is used to describe supported image file formats.
  153. //
  154. //----------------------------------------------------------------------------
  155.  
  156. typedef enum D3DX11_IMAGE_FILE_FORMAT
  157. {
  158.     D3DX11_IFF_BMP         = 0,
  159.     D3DX11_IFF_JPG         = 1,
  160.     D3DX11_IFF_PNG         = 3,
  161.     D3DX11_IFF_DDS         = 4,
  162.     D3DX11_IFF_TIFF               = 10,
  163.     D3DX11_IFF_GIF                = 11,
  164.     D3DX11_IFF_WMP                = 12,
  165.     D3DX11_IFF_FORCE_DWORD = 0x7fffffff
  166.  
  167. } D3DX11_IMAGE_FILE_FORMAT;
  168.  
  169.  
  170. //----------------------------------------------------------------------------
  171. // D3DX11_SAVE_TEXTURE_FLAG:
  172. // ---------------------
  173. // This enum is used to support texture saving options.
  174. //
  175. //----------------------------------------------------------------------------
  176.  
  177. typedef enum D3DX11_SAVE_TEXTURE_FLAG
  178. {
  179.     D3DX11_STF_USEINPUTBLOB      = 0x0001,
  180. } D3DX11_SAVE_TEXTURE_FLAG;
  181.  
  182.  
  183. //----------------------------------------------------------------------------
  184. // D3DX11_IMAGE_INFO:
  185. // ---------------
  186. // This structure is used to return a rough description of what the
  187. // the original contents of an image file looked like.
  188. //
  189. //  Width
  190. //      Width of original image in pixels
  191. //  Height
  192. //      Height of original image in pixels
  193. //  Depth
  194. //      Depth of original image in pixels
  195. //  ArraySize
  196. //      Array size in textures
  197. //  MipLevels
  198. //      Number of mip levels in original image
  199. //  MiscFlags
  200. //      Miscellaneous flags
  201. //  Format
  202. //      D3D format which most closely describes the data in original image
  203. //  ResourceDimension
  204. //      D3D11_RESOURCE_DIMENSION representing the dimension of texture stored in the file.
  205. //      D3D11_RESOURCE_DIMENSION_TEXTURE1D, 2D, 3D
  206. //  ImageFileFormat
  207. //      D3DX11_IMAGE_FILE_FORMAT representing the format of the image file.
  208. //----------------------------------------------------------------------------
  209.  
  210. typedef struct D3DX11_IMAGE_INFO
  211. {
  212.     UINT                        Width;
  213.     UINT                        Height;
  214.     UINT                        Depth;
  215.     UINT                        ArraySize;
  216.     UINT                        MipLevels;
  217.     UINT                        MiscFlags;
  218.     DXGI_FORMAT                 Format;
  219.     D3D11_RESOURCE_DIMENSION    ResourceDimension;
  220.     D3DX11_IMAGE_FILE_FORMAT    ImageFileFormat;
  221. } D3DX11_IMAGE_INFO;
  222.  
  223.  
  224.  
  225.  
  226.  
  227. #ifdef __cplusplus
  228. extern "C" {
  229. #endif //__cplusplus
  230.  
  231.  
  232.  
  233. //////////////////////////////////////////////////////////////////////////////
  234. // Image File APIs ///////////////////////////////////////////////////////////
  235. //////////////////////////////////////////////////////////////////////////////
  236.  
  237. //----------------------------------------------------------------------------
  238. // D3DX11_IMAGE_LOAD_INFO:
  239. // ---------------
  240. // This structure can be optionally passed in to texture loader APIs to
  241. // control how textures get loaded. Pass in D3DX11_DEFAULT for any of these
  242. // to have D3DX automatically pick defaults based on the source file.
  243. //
  244. //  Width
  245. //      Rescale texture to Width texels wide
  246. //  Height
  247. //      Rescale texture to Height texels high
  248. //  Depth
  249. //      Rescale texture to Depth texels deep
  250. //  FirstMipLevel
  251. //      First mip level to load
  252. //  MipLevels
  253. //      Number of mip levels to load after the first level
  254. //  Usage
  255. //      D3D11_USAGE flag for the new texture
  256. //  BindFlags
  257. //      D3D11 Bind flags for the new texture
  258. //  CpuAccessFlags
  259. //      D3D11 CPU Access flags for the new texture
  260. //  MiscFlags
  261. //      Reserved. Must be 0
  262. //  Format
  263. //      Resample texture to the specified format
  264. //  Filter
  265. //      Filter the texture using the specified filter (only when resampling)
  266. //  MipFilter
  267. //      Filter the texture mip levels using the specified filter (only if
  268. //      generating mips)
  269. //  pSrcInfo
  270. //      (optional) pointer to a D3DX11_IMAGE_INFO structure that will get
  271. //      populated with source image information
  272. //----------------------------------------------------------------------------
  273.  
  274.  
  275. typedef struct D3DX11_IMAGE_LOAD_INFO
  276. {
  277.     UINT                       Width;
  278.     UINT                       Height;
  279.     UINT                       Depth;
  280.     UINT                       FirstMipLevel;
  281.     UINT                       MipLevels;
  282.     D3D11_USAGE                Usage;
  283.     UINT                       BindFlags;
  284.     UINT                       CpuAccessFlags;
  285.     UINT                       MiscFlags;
  286.     DXGI_FORMAT                Format;
  287.     UINT                       Filter;
  288.     UINT                       MipFilter;
  289.     D3DX11_IMAGE_INFO*         pSrcInfo;
  290.    
  291. #ifdef __cplusplus
  292.     D3DX11_IMAGE_LOAD_INFO()
  293.     {
  294.         Width = D3DX11_DEFAULT;
  295.         Height = D3DX11_DEFAULT;
  296.         Depth = D3DX11_DEFAULT;
  297.         FirstMipLevel = D3DX11_DEFAULT;
  298.         MipLevels = D3DX11_DEFAULT;
  299.         Usage = (D3D11_USAGE) D3DX11_DEFAULT;
  300.         BindFlags = D3DX11_DEFAULT;
  301.         CpuAccessFlags = D3DX11_DEFAULT;
  302.         MiscFlags = D3DX11_DEFAULT;
  303.         Format = DXGI_FORMAT_FROM_FILE;
  304.         Filter = D3DX11_DEFAULT;
  305.         MipFilter = D3DX11_DEFAULT;
  306.         pSrcInfo = NULL;
  307.     }  
  308. #endif
  309.  
  310. } D3DX11_IMAGE_LOAD_INFO;
  311.  
  312. //-------------------------------------------------------------------------------
  313. // GetImageInfoFromFile/Resource/Memory:
  314. // ------------------------------
  315. // Fills in a D3DX11_IMAGE_INFO struct with information about an image file.
  316. //
  317. // Parameters:
  318. //  pSrcFile
  319. //      File name of the source image.
  320. //  pSrcModule
  321. //      Module where resource is located, or NULL for module associated
  322. //      with image the os used to create the current process.
  323. //  pSrcResource
  324. //      Resource name.
  325. //  pSrcData
  326. //      Pointer to file in memory.
  327. //  SrcDataSize
  328. //      Size in bytes of file in memory.
  329. //  pPump
  330. //      Optional pointer to a thread pump object to use.
  331. //  pSrcInfo
  332. //      Pointer to a D3DX11_IMAGE_INFO structure to be filled in with the
  333. //      description of the data in the source image file.
  334. //  pHResult
  335. //      Pointer to a memory location to receive the return value upon completion.
  336. //      Maybe NULL if not needed.
  337. //      If pPump != NULL, pHResult must be a valid memory location until the
  338. //      the asynchronous execution completes.
  339. //-------------------------------------------------------------------------------
  340.  
  341. HRESULT WINAPI
  342.     D3DX11GetImageInfoFromFileA(
  343.         LPCSTR                    pSrcFile,
  344.         ID3DX11ThreadPump*        pPump,
  345.         D3DX11_IMAGE_INFO*        pSrcInfo,
  346.         HRESULT*                  pHResult);
  347.  
  348. HRESULT WINAPI
  349.     D3DX11GetImageInfoFromFileW(
  350.         LPCWSTR                   pSrcFile,
  351.         ID3DX11ThreadPump*        pPump,
  352.         D3DX11_IMAGE_INFO*        pSrcInfo,
  353.         HRESULT*                  pHResult);
  354.  
  355. #ifdef UNICODE
  356. #define D3DX11GetImageInfoFromFile D3DX11GetImageInfoFromFileW
  357. #else
  358. #define D3DX11GetImageInfoFromFile D3DX11GetImageInfoFromFileA
  359. #endif
  360.  
  361.  
  362. HRESULT WINAPI
  363.     D3DX11GetImageInfoFromResourceA(
  364.         HMODULE                   hSrcModule,
  365.         LPCSTR                    pSrcResource,
  366.         ID3DX11ThreadPump*        pPump,
  367.         D3DX11_IMAGE_INFO*        pSrcInfo,
  368.         HRESULT*                  pHResult);
  369.  
  370. HRESULT WINAPI
  371.     D3DX11GetImageInfoFromResourceW(
  372.         HMODULE                   hSrcModule,
  373.         LPCWSTR                   pSrcResource,
  374.         ID3DX11ThreadPump*        pPump,
  375.         D3DX11_IMAGE_INFO*        pSrcInfo,
  376.         HRESULT*                  pHResult);
  377.  
  378. #ifdef UNICODE
  379. #define D3DX11GetImageInfoFromResource D3DX11GetImageInfoFromResourceW
  380. #else
  381. #define D3DX11GetImageInfoFromResource D3DX11GetImageInfoFromResourceA
  382. #endif
  383.  
  384.  
  385. HRESULT WINAPI
  386.     D3DX11GetImageInfoFromMemory(
  387.         LPCVOID                   pSrcData,
  388.         SIZE_T                    SrcDataSize,
  389.         ID3DX11ThreadPump*        pPump,
  390.         D3DX11_IMAGE_INFO*        pSrcInfo,
  391.         HRESULT*                  pHResult);
  392.  
  393.  
  394. //////////////////////////////////////////////////////////////////////////////
  395. // Create/Save Texture APIs //////////////////////////////////////////////////
  396. //////////////////////////////////////////////////////////////////////////////
  397.  
  398. //----------------------------------------------------------------------------
  399. // D3DX11CreateTextureFromFile/Resource/Memory:
  400. // D3DX11CreateShaderResourceViewFromFile/Resource/Memory:
  401. // -----------------------------------
  402. // Create a texture object from a file or resource.
  403. //
  404. // Parameters:
  405. //
  406. //  pDevice
  407. //      The D3D device with which the texture is going to be used.
  408. //  pSrcFile
  409. //      File name.
  410. //  hSrcModule
  411. //      Module handle. if NULL, current module will be used.
  412. //  pSrcResource
  413. //      Resource name in module
  414. //  pvSrcData
  415. //      Pointer to file in memory.
  416. //  SrcDataSize
  417. //      Size in bytes of file in memory.
  418. //  pLoadInfo
  419. //      Optional pointer to a D3DX11_IMAGE_LOAD_INFO structure that
  420. //      contains additional loader parameters.
  421. //  pPump
  422. //      Optional pointer to a thread pump object to use.
  423. //  ppTexture
  424. //      [out] Created texture object.
  425. //  ppShaderResourceView
  426. //      [out] Shader resource view object created.
  427. //  pHResult
  428. //      Pointer to a memory location to receive the return value upon completion.
  429. //      Maybe NULL if not needed.
  430. //      If pPump != NULL, pHResult must be a valid memory location until the
  431. //      the asynchronous execution completes.
  432. //
  433. //----------------------------------------------------------------------------
  434.  
  435.  
  436. // FromFile
  437.  
  438. HRESULT WINAPI
  439.     D3DX11CreateShaderResourceViewFromFileA(
  440.         ID3D11Device*               pDevice,
  441.         LPCSTR                      pSrcFile,
  442.         D3DX11_IMAGE_LOAD_INFO      *pLoadInfo,
  443.         ID3DX11ThreadPump*          pPump,
  444.         ID3D11ShaderResourceView**  ppShaderResourceView,
  445.         HRESULT*                    pHResult);
  446.  
  447. HRESULT WINAPI
  448.     D3DX11CreateShaderResourceViewFromFileW(
  449.         ID3D11Device*               pDevice,
  450.         LPCWSTR                     pSrcFile,
  451.         D3DX11_IMAGE_LOAD_INFO      *pLoadInfo,
  452.         ID3DX11ThreadPump*          pPump,
  453.         ID3D11ShaderResourceView**  ppShaderResourceView,
  454.         HRESULT*                    pHResult);
  455.  
  456. #ifdef UNICODE
  457. #define D3DX11CreateShaderResourceViewFromFile D3DX11CreateShaderResourceViewFromFileW
  458. #else
  459. #define D3DX11CreateShaderResourceViewFromFile D3DX11CreateShaderResourceViewFromFileA
  460. #endif
  461.  
  462. HRESULT WINAPI
  463.     D3DX11CreateTextureFromFileA(
  464.         ID3D11Device*               pDevice,
  465.         LPCSTR                      pSrcFile,
  466.         D3DX11_IMAGE_LOAD_INFO      *pLoadInfo,
  467.         ID3DX11ThreadPump*          pPump,
  468.         ID3D11Resource**            ppTexture,
  469.         HRESULT*                    pHResult);
  470.  
  471. HRESULT WINAPI
  472.     D3DX11CreateTextureFromFileW(
  473.         ID3D11Device*               pDevice,
  474.         LPCWSTR                     pSrcFile,
  475.         D3DX11_IMAGE_LOAD_INFO      *pLoadInfo,
  476.         ID3DX11ThreadPump*          pPump,
  477.         ID3D11Resource**            ppTexture,
  478.         HRESULT*                    pHResult);
  479.  
  480. #ifdef UNICODE
  481. #define D3DX11CreateTextureFromFile D3DX11CreateTextureFromFileW
  482. #else
  483. #define D3DX11CreateTextureFromFile D3DX11CreateTextureFromFileA
  484. #endif
  485.  
  486.  
  487. // FromResource (resources in dll/exes)
  488.  
  489. HRESULT WINAPI
  490.     D3DX11CreateShaderResourceViewFromResourceA(
  491.         ID3D11Device*              pDevice,
  492.         HMODULE                    hSrcModule,
  493.         LPCSTR                     pSrcResource,
  494.         D3DX11_IMAGE_LOAD_INFO*    pLoadInfo,
  495.         ID3DX11ThreadPump*         pPump,
  496.         ID3D11ShaderResourceView** ppShaderResourceView,
  497.         HRESULT*                   pHResult);
  498.  
  499. HRESULT WINAPI
  500.     D3DX11CreateShaderResourceViewFromResourceW(
  501.         ID3D11Device*              pDevice,
  502.         HMODULE                    hSrcModule,
  503.         LPCWSTR                    pSrcResource,
  504.         D3DX11_IMAGE_LOAD_INFO*    pLoadInfo,
  505.         ID3DX11ThreadPump*         pPump,
  506.         ID3D11ShaderResourceView** ppShaderResourceView,
  507.         HRESULT*                   pHResult);
  508.  
  509. #ifdef UNICODE
  510. #define D3DX11CreateShaderResourceViewFromResource D3DX11CreateShaderResourceViewFromResourceW
  511. #else
  512. #define D3DX11CreateShaderResourceViewFromResource D3DX11CreateShaderResourceViewFromResourceA
  513. #endif
  514.  
  515. HRESULT WINAPI
  516.     D3DX11CreateTextureFromResourceA(
  517.         ID3D11Device*            pDevice,
  518.         HMODULE                  hSrcModule,
  519.         LPCSTR                   pSrcResource,
  520.         D3DX11_IMAGE_LOAD_INFO   *pLoadInfo,  
  521.         ID3DX11ThreadPump*       pPump,  
  522.         ID3D11Resource**         ppTexture,
  523.         HRESULT*                 pHResult);
  524.  
  525. HRESULT WINAPI
  526.     D3DX11CreateTextureFromResourceW(
  527.         ID3D11Device*           pDevice,
  528.         HMODULE                 hSrcModule,
  529.         LPCWSTR                 pSrcResource,
  530.         D3DX11_IMAGE_LOAD_INFO* pLoadInfo,
  531.         ID3DX11ThreadPump*      pPump,
  532.         ID3D11Resource**        ppTexture,
  533.         HRESULT*                pHResult);
  534.  
  535. #ifdef UNICODE
  536. #define D3DX11CreateTextureFromResource D3DX11CreateTextureFromResourceW
  537. #else
  538. #define D3DX11CreateTextureFromResource D3DX11CreateTextureFromResourceA
  539. #endif
  540.  
  541.  
  542. // FromFileInMemory
  543.  
  544. HRESULT WINAPI
  545.     D3DX11CreateShaderResourceViewFromMemory(
  546.         ID3D11Device*              pDevice,
  547.         LPCVOID                    pSrcData,
  548.         SIZE_T                     SrcDataSize,
  549.         D3DX11_IMAGE_LOAD_INFO*    pLoadInfo,
  550.         ID3DX11ThreadPump*         pPump,        
  551.         ID3D11ShaderResourceView** ppShaderResourceView,
  552.         HRESULT*                   pHResult);
  553.  
  554. HRESULT WINAPI
  555.     D3DX11CreateTextureFromMemory(
  556.         ID3D11Device*             pDevice,
  557.         LPCVOID                   pSrcData,
  558.         SIZE_T                    SrcDataSize,
  559.         D3DX11_IMAGE_LOAD_INFO*   pLoadInfo,    
  560.         ID3DX11ThreadPump*        pPump,    
  561.         ID3D11Resource**          ppTexture,
  562.         HRESULT*                  pHResult);
  563.  
  564.  
  565. //////////////////////////////////////////////////////////////////////////////
  566. // Misc Texture APIs /////////////////////////////////////////////////////////
  567. //////////////////////////////////////////////////////////////////////////////
  568.  
  569. //----------------------------------------------------------------------------
  570. // D3DX11_TEXTURE_LOAD_INFO:
  571. // ------------------------
  572. //
  573. //----------------------------------------------------------------------------
  574.  
  575. typedef struct _D3DX11_TEXTURE_LOAD_INFO
  576. {
  577.     D3D11_BOX       *pSrcBox;
  578.     D3D11_BOX       *pDstBox;
  579.     UINT            SrcFirstMip;
  580.     UINT            DstFirstMip;
  581.     UINT            NumMips;
  582.     UINT            SrcFirstElement;
  583.     UINT            DstFirstElement;
  584.     UINT            NumElements;
  585.     UINT            Filter;
  586.     UINT            MipFilter;
  587.    
  588. #ifdef __cplusplus
  589.     _D3DX11_TEXTURE_LOAD_INFO()
  590.     {
  591.         pSrcBox = NULL;
  592.         pDstBox = NULL;
  593.         SrcFirstMip = 0;
  594.         DstFirstMip = 0;
  595.         NumMips = D3DX11_DEFAULT;
  596.         SrcFirstElement = 0;
  597.         DstFirstElement = 0;
  598.         NumElements = D3DX11_DEFAULT;
  599.         Filter = D3DX11_DEFAULT;
  600.         MipFilter = D3DX11_DEFAULT;
  601.     }  
  602. #endif
  603.  
  604. } D3DX11_TEXTURE_LOAD_INFO;
  605.  
  606.  
  607. //----------------------------------------------------------------------------
  608. // D3DX11LoadTextureFromTexture:
  609. // ----------------------------
  610. // Load a texture from a texture.
  611. //
  612. // Parameters:
  613. //
  614. //----------------------------------------------------------------------------
  615.  
  616.  
  617. HRESULT WINAPI
  618.     D3DX11LoadTextureFromTexture(
  619.                 ID3D11DeviceContext       *pContext,
  620.         ID3D11Resource            *pSrcTexture,
  621.         D3DX11_TEXTURE_LOAD_INFO  *pLoadInfo,
  622.         ID3D11Resource            *pDstTexture);
  623.  
  624.  
  625. //----------------------------------------------------------------------------
  626. // D3DX11FilterTexture:
  627. // ------------------
  628. // Filters mipmaps levels of a texture.
  629. //
  630. // Parameters:
  631. //  pBaseTexture
  632. //      The texture object to be filtered
  633. //  SrcLevel
  634. //      The level whose image is used to generate the subsequent levels.
  635. //  MipFilter
  636. //      D3DX11_FILTER flags controlling how each miplevel is filtered.
  637. //      Or D3DX11_DEFAULT for D3DX11_FILTER_BOX,
  638. //
  639. //----------------------------------------------------------------------------
  640.  
  641. HRESULT WINAPI
  642.     D3DX11FilterTexture(
  643.                 ID3D11DeviceContext       *pContext,
  644.         ID3D11Resource            *pTexture,
  645.         UINT                      SrcLevel,
  646.         UINT                      MipFilter);
  647.  
  648.  
  649. //----------------------------------------------------------------------------
  650. // D3DX11SaveTextureToFile:
  651. // ----------------------
  652. // Save a texture to a file.
  653. //
  654. // Parameters:
  655. //  pDestFile
  656. //      File name of the destination file
  657. //  DestFormat
  658. //      D3DX11_IMAGE_FILE_FORMAT specifying file format to use when saving.
  659. //  pSrcTexture
  660. //      Source texture, containing the image to be saved
  661. //
  662. //----------------------------------------------------------------------------
  663.  
  664. HRESULT WINAPI
  665.     D3DX11SaveTextureToFileA(
  666.                 ID3D11DeviceContext       *pContext,
  667.         ID3D11Resource            *pSrcTexture,
  668.         D3DX11_IMAGE_FILE_FORMAT    DestFormat,
  669.         LPCSTR                    pDestFile);
  670.  
  671. HRESULT WINAPI
  672.     D3DX11SaveTextureToFileW(
  673.                 ID3D11DeviceContext       *pContext,
  674.         ID3D11Resource            *pSrcTexture,
  675.         D3DX11_IMAGE_FILE_FORMAT    DestFormat,
  676.         LPCWSTR                   pDestFile);
  677.  
  678. #ifdef UNICODE
  679. #define D3DX11SaveTextureToFile D3DX11SaveTextureToFileW
  680. #else
  681. #define D3DX11SaveTextureToFile D3DX11SaveTextureToFileA
  682. #endif
  683.  
  684.  
  685. //----------------------------------------------------------------------------
  686. // D3DX11SaveTextureToMemory:
  687. // ----------------------
  688. // Save a texture to a blob.
  689. //
  690. // Parameters:
  691. //  pSrcTexture
  692. //      Source texture, containing the image to be saved
  693. //  DestFormat
  694. //      D3DX11_IMAGE_FILE_FORMAT specifying file format to use when saving.
  695. //  ppDestBuf
  696. //      address of a d3dxbuffer pointer to return the image data
  697. //  Flags
  698. //      optional flags
  699. //----------------------------------------------------------------------------
  700.  
  701. HRESULT WINAPI
  702.     D3DX11SaveTextureToMemory(
  703.                 ID3D11DeviceContext       *pContext,
  704.         ID3D11Resource*            pSrcTexture,
  705.         D3DX11_IMAGE_FILE_FORMAT   DestFormat,
  706.         ID3D10Blob**               ppDestBuf,
  707.         UINT                       Flags);
  708.  
  709.  
  710. //----------------------------------------------------------------------------
  711. // D3DX11ComputeNormalMap:
  712. // ---------------------
  713. // Converts a height map into a normal map.  The (x,y,z) components of each
  714. // normal are mapped to the (r,g,b) channels of the output texture.
  715. //
  716. // Parameters
  717. //  pSrcTexture
  718. //      Pointer to the source heightmap texture
  719. //  Flags
  720. //      D3DX11_NORMALMAP flags
  721. //  Channel
  722. //      D3DX11_CHANNEL specifying source of height information
  723. //  Amplitude
  724. //      The constant value which the height information is multiplied by.
  725. //  pDestTexture
  726. //      Pointer to the destination texture
  727. //---------------------------------------------------------------------------
  728.  
  729. HRESULT WINAPI
  730.     D3DX11ComputeNormalMap(
  731.         ID3D11DeviceContext      *pContext,
  732.         ID3D11Texture2D              *pSrcTexture,
  733.         UINT                      Flags,
  734.         UINT                      Channel,
  735.         FLOAT                     Amplitude,
  736.         ID3D11Texture2D              *pDestTexture);
  737.  
  738.  
  739. //----------------------------------------------------------------------------
  740. // D3DX11SHProjectCubeMap:
  741. // ----------------------
  742. //  Projects a function represented in a cube map into spherical harmonics.
  743. //
  744. //  Parameters:
  745. //   Order
  746. //      Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
  747. //   pCubeMap
  748. //      CubeMap that is going to be projected into spherical harmonics
  749. //   pROut
  750. //      Output SH vector for Red.
  751. //   pGOut
  752. //      Output SH vector for Green
  753. //   pBOut
  754. //      Output SH vector for Blue        
  755. //
  756. //---------------------------------------------------------------------------
  757.  
  758. HRESULT WINAPI
  759.     D3DX11SHProjectCubeMap(
  760.         ID3D11DeviceContext                                *pContext,
  761.         __in_range(2,6) UINT                                Order,
  762.         ID3D11Texture2D                                    *pCubeMap,
  763.         __out_ecount(Order*Order) FLOAT                    *pROut,
  764.         __out_ecount_opt(Order*Order) FLOAT                *pGOut,
  765.         __out_ecount_opt(Order*Order) FLOAT                *pBOut);
  766.  
  767. #ifdef __cplusplus
  768. }
  769. #endif //__cplusplus
  770.  
  771. #endif //__D3DX11TEX_H__
  772.  
  773.