[PATCH 2/3] dx8vb: Add D3DX8 coclass and ID3DX8 interface

Fabian Maurer <[email protected]>
Newsgroups gmane.comp.emulators.wine.patches
Message-ID <[email protected]>
Signed-off-by: Fabian Maurer <[email protected]>
---
 dlls/dx8vb/Makefile.in |   2 +
 dlls/dx8vb/dx8vb.idl   | 709 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 711 insertions(+)
 create mode 100644 dlls/dx8vb/dx8vb.idl

diff --git a/dlls/dx8vb/Makefile.in b/dlls/dx8vb/Makefile.in
index d9f93f96f1..e0a083aa3d 100644
--- a/dlls/dx8vb/Makefile.in
+++ b/dlls/dx8vb/Makefile.in
@@ -3,3 +3,5 @@ IMPORTS   = uuid ole32
 
 C_SRCS = \
 	main.c
+
+IDL_SRCS = dx8vb.idl
diff --git a/dlls/dx8vb/dx8vb.idl b/dlls/dx8vb/dx8vb.idl
new file mode 100644
index 0000000000..0b598be429
--- /dev/null
+++ b/dlls/dx8vb/dx8vb.idl
@@ -0,0 +1,709 @@
+/*
+ * Copyright 2017 Fabian Maurer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma makedep register
+
+#include "unknwn.idl"
+
+#include "d3d8types.h"
+
+interface Direct3DDevice8;
+interface D3DXFont;
+interface D3DXBuffer;
+interface Direct3DSurface8;
+interface Direct3DTexture8;
+interface Direct3DCubeTexture8;
+interface Direct3DVolume8;
+interface D3DXMesh;
+interface D3DXSPMesh;
+interface D3DXPMesh;
+interface D3DXBaseMesh;
+interface D3DXSkinMesh;
+interface D3DXSprite;
+interface D3DXRenderToSurface;
+interface Direct3DBaseTexture8;
+
+typedef enum {
+    D3DXIFF_BMP = 0,
+    D3DXIFF_JPG = 1,
+    D3DXIFF_TGA = 2,
+    D3DXIFF_PNG = 3,
+    D3DXIFF_DDS = 4,
+    D3DXIFF_PPM = 5,
+    D3DXIFF_DIB = 6,
+    D3DXIFF_FORCE_DWORD = 0x7fffffff
+} D3DXIMAGE_FILEFORMAT;
+
+typedef struct tagD3DXDECLARATOR {
+    LONG value[32];
+} D3DXDECLARATOR;
+
+typedef struct tagD3DXMATERIAL {
+    D3DMATERIAL8 MatD3D;
+    BSTR TextureFilename;
+} D3DXMATERIAL;
+
+typedef struct tagD3DXBONECOMBINATION {
+    LONG AttribId;
+    LONG FaceStart;
+    LONG FaceCount;
+    LONG VertexStart;
+    LONG VertexCount;
+    LONG pBones;
+} D3DXBONECOMBINATION;
+
+[
+    object,
+    uuid(3ac50043-cf82-4c44-862e-b206b4f03301),
+    local
+]
+interface ID3DX8 : IUnknown {
+    HRESULT CreateFont(
+        [in] Direct3DDevice8 *device,
+        [in] LONG hFont,
+        [out, retval] D3DXFont **retFont
+    );
+    HRESULT DrawText(
+        [in] D3DXFont *d3dFont,
+        [in] LONG color,
+        [in] BSTR text,
+        [in] RECT *rect,
+        [in] LONG format
+    );
+    HRESULT GetFVFVertexSize(
+        [in] LONG fvf,
+        [out, retval] LONG *size
+    );
+    HRESULT AssembleShaderFromFile(
+        [in] BSTR file,
+        [in] LONG flags,
+        [in, out] BSTR *log,
+        [in, out] D3DXBuffer **constants,
+        [out, retval] D3DXBuffer **ppVertexShader
+    );
+    HRESULT AssembleShader(
+        [in] BSTR data,
+        [in] LONG flags,
+        [in, out] D3DXBuffer **constants,
+        [in, out, optional] BSTR *log,
+        [out, retval] D3DXBuffer **ppVertexShader
+    );
+    HRESULT GetErrorString(
+        [in] LONG hr,
+        [out, retval] BSTR *retStr
+    );
+    HRESULT LoadSurfaceFromFile(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] BSTR srcFile,
+        [in] void *srcRect,
+        [in] LONG filter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo
+    );
+    HRESULT LoadSurfaceFromFileInMemory(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] void *srcData,
+        [in] LONG lengthInBytes,
+        [in] void *srcRect,
+        [in] LONG filter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo
+    );
+    HRESULT LoadSurfaceFromSurface(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] Direct3DSurface8 *srcSurface,
+        [in] void *srcPalette,
+        [in] void *srcRect,
+        [in] LONG filter,
+        [in] LONG colorKey
+    );
+    HRESULT LoadSurfaceFromMemory(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] void *srcData,
+        [in] D3DFORMAT formatSrc,
+        [in] LONG srcPitch,
+        [in] void *srcPalette,
+        [in] RECT *srcRect,
+        [in] LONG filter,
+        [in] LONG colorKey
+    );
+    HRESULT CheckTextureRequirements(
+        [in, out] Direct3DDevice8 *device,
+        [in, out] LONG *width,
+        [in, out] LONG *height,
+        [in, out] LONG *mipLevels,
+        [in] LONG usage,
+        [in, out] D3DFORMAT *pixelformat,
+        [in] D3DPOOL pool
+    );
+    HRESULT CreateTexture(
+        [in] Direct3DDevice8 *device,
+        [in] LONG width,
+        [in] LONG height,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromResource(
+        [in] Direct3DDevice8 *device,
+        [in] LONG hModule,
+        [in] BSTR srcResource,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFile(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFileEx(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [in] LONG width,
+        [in] LONG height,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [in] LONG filter,
+        [in] LONG mipFilter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFileInMemory(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] LONG lengthInBytes,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT CreateTextureFromFileInMemoryEx(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] LONG lengthInBytes,
+        [in] LONG width,
+        [in] LONG height,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [in] LONG filter,
+        [in] LONG mipFilter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DTexture8 **ppTexture
+    );
+    HRESULT FilterTexture(
+        [in] Direct3DTexture8 *texture,
+        [in] void *palette,
+        [in] LONG srcLevel,
+        [in] LONG filter
+    );
+    HRESULT CheckCubeTextureRequirements(
+        [in] Direct3DDevice8 *device,
+        [in, out] LONG *size,
+        [in, out] LONG *mipLevels,
+        [in] LONG usage,
+        [in, out] D3DFORMAT *pixelformat,
+        [in] D3DPOOL pool
+    );
+    HRESULT CreateCubeTexture(
+        [in] Direct3DDevice8 *device,
+        [in] LONG size,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [out, retval] Direct3DCubeTexture8 **ppCubeTexture
+    );
+    HRESULT CreateCubeTextureFromFile(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [out, retval] Direct3DCubeTexture8 **ppCubeTexture
+    );
+    HRESULT CreateCubeTextureFromFileEx(
+        [in] Direct3DDevice8 *device,
+        [in] BSTR srcFile,
+        [in] LONG textureSize,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [in] LONG filter,
+        [in] LONG mipFilter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DCubeTexture8 **ppTexture
+    );
+    HRESULT CreateCubeTextureFromFileInMemory(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] LONG lengthInBytes,
+        [out, retval] Direct3DCubeTexture8 **ppTexture
+    );
+    HRESULT CreateCubeTextureFromFileInMemoryEx(
+        [in] Direct3DDevice8 *device,
+        [in] void *srcData,
+        [in] LONG lengthInBytes,
+        [in] LONG textureSize,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [in] LONG filter,
+        [in] LONG mipFilter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DCubeTexture8 **ppTexture
+    );
+    HRESULT FilterCubeTexture(
+        [in] Direct3DCubeTexture8 *cubeTexture,
+        [in] void *palette,
+        [in] LONG srcLevel,
+        [in] LONG filter
+    );
+    HRESULT CheckVolumeTextureRequirements(
+        [in] Direct3DDevice8 *device,
+        [out] LONG *width,
+        [out] LONG *height,
+        [out] LONG *depth,
+        [out] LONG *mipLevels,
+        [in] LONG usage,
+        [in, out] D3DFORMAT *pixelformat,
+        [in] D3DPOOL pool
+    );
+    HRESULT CreateTextureFromResourceEx(
+        [in] Direct3DDevice8 *device,
+        [in] LONG hSrcModule,
+        [in] BSTR srcResource,
+        [in] LONG width,
+        [in] LONG height,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [in] LONG filter,
+        [in] LONG mipFilter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo,
+        [in] void *palette,
+        [out, retval] Direct3DTexture8 **retTexture
+    );
+    HRESULT CreateVolumeTexture(
+        [in] Direct3DDevice8 *device,
+        [in] LONG width,
+        [in] LONG height,
+        [in] LONG depth,
+        [in] LONG mipLevels,
+        [in] LONG usage,
+        [in] D3DFORMAT pixelformat,
+        [in] D3DPOOL pool,
+        [out, retval] Direct3DVolume8 **ppVolumeTexture
+    );
+    HRESULT FilterVolumeTexture(
+        [in] Direct3DVolume8 *volumeTexture,
+        [in] void *palette,
+        [in] LONG srcLevel,
+        [in] LONG filter
+    );
+    HRESULT LoadSurfaceFromResource(
+        [in] Direct3DSurface8 *destSurface,
+        [in] void *destPalette,
+        [in] void *destRect,
+        [in] LONG hSrcModule,
+        [in] BSTR srcResource,
+        [in] void *srcRect,
+        [in] LONG filter,
+        [in] LONG colorKey,
+        [in, out] void *srcInfo
+    );
+    HRESULT LoadVolumeFromVolume(
+        [in] Direct3DVolume8 *destVolume,
+        [in] void *destPalette,
+        [in] void *destBox,
+        [in] Direct3DVolume8 *srcVolume,
+        [in] void *srcPalette,
+        [in] void *srcBox,
+        [in] LONG filter,
+        [in] LONG colorKey
+    );
+    HRESULT LoadVolumeFromMemory(
+        [in] Direct3DVolume8 *destVolume,
+        [in] void *destPalette,
+        [in] void *destBox,
+        [in] void *srcMemory,
+        [in] LONG srcFormat,
+        [in] LONG srcRowPitch,
+        [in] LONG srcSlicePitch,
+        [in] void *srcPalette,
+        [in] void *srcBox,
+        [in] LONG filter,
+        [in] LONG colorKey
+    );
+    HRESULT CreateMesh(
+        [in] LONG numFaces,
+        [in] LONG numVertices,
+        [in] LONG options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *pD3D,
+        [out, retval] D3DXMesh **ppMesh
+    );
+    HRESULT CreateMeshFVF(
+        [in] LONG numFaces,
+        [in] LONG numVertices,
+        [in] LONG options,
+        [in] LONG fvf,
+        [in] Direct3DDevice8 *pD3D,
+        [out, retval] D3DXMesh **ppMesh
+    );
+    HRESULT CreateSPMesh(
+        [in] D3DXMesh *pMesh,
+        [in] void *adjacency,
+        [in] void *vertexAttributeWeights,
+        [in] void *vertexWeights,
+        [out, retval] D3DXSPMesh **ppSMesh
+    );
+    HRESULT GeneratePMesh(
+        [in] D3DXMesh *mesh,
+        [in] void *adjacency,
+        [in] void *vertexAttributeWeights,
+        [in] void *vertexWeights,
+        [in] LONG minValue,
+        [in] LONG options,
+        [out, retval] D3DXPMesh **ppPMesh
+    );
+    HRESULT SimplifyMesh(
+        [in] D3DXMesh *mesh,
+        [in] void *adjacency,
+        [in] void *vertexAttributeWeights,
+        [in] void *vertexWeights,
+        [in] LONG minValue,
+        [in] LONG options,
+        [out, retval] D3DXMesh **ppMesh
+    );
+    HRESULT ComputeBoundingSphere(
+        [in] void *pointsFVF,
+        [in] LONG numVertices,
+        [in] LONG fvf,
+        [in] D3DVECTOR *centers,
+        [in, out] float *radiusArray
+    );
+    HRESULT ComputeBoundingBox(
+        [in] void *pointsFVF,
+        [in] LONG numVertices,
+        [in] LONG fvf,
+        [in, out] D3DVECTOR *minVert,
+        [in, out] D3DVECTOR *maxVert
+    );
+    HRESULT ComputeNormals(
+        [in] D3DXBaseMesh *pMesh
+    );
+    HRESULT DeclaratorFromFVF(
+        [in] LONG fvf,
+        [out] D3DXDECLARATOR *declarator
+    );
+    HRESULT FVFFromDeclarator(
+        [in] D3DXDECLARATOR *declarator,
+        [out, retval] LONG *fvf
+    );
+    HRESULT CreateBuffer(
+        [in] LONG numBytes,
+        [out, retval] D3DXBuffer **ppBuffer
+    );
+    HRESULT LoadMeshFromX(
+        [in] BSTR filename,
+        [in] LONG options,
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **retAdjacency,
+        [in, out] D3DXBuffer **retMaterials,
+        [in, out] LONG *retMaterialCount,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT SaveMeshToX(
+        [in] BSTR filename,
+        [in] D3DXMesh *mesh,
+        [in] void *adjacencyArray,
+        [in] D3DXMATERIAL *materialArray,
+        [in] LONG materialCount,
+        [in] LONG xFormat
+    );
+    HRESULT LoadMeshFromXof(
+        [in] IUnknown *xofobjMesh,
+        [in] LONG options,
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **retBufAdjacency,
+        [in, out] D3DXBuffer **retMaterials,
+        [in, out] LONG *retMaterialCount,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT TessellateNPatches(
+        [in] D3DXMesh *meshIn,
+        [in] void *adjacencyIn,
+        [in] float numSegs,
+        [in] VARIANT_BOOL quadraticInterpNormals,
+        [in, out, optional] D3DXBuffer **adjacencyOut,
+        [out, retval] D3DXMesh **meshOut
+    );
+    HRESULT BufferGetMaterial(
+        [in] D3DXBuffer *materialBuffer,
+        [in] LONG index,
+        [out] D3DMATERIAL8 *mat
+    );
+    HRESULT BufferGetTextureName(
+        [in] D3DXBuffer *materialBuffer,
+        [in] LONG index,
+        [out, retval] BSTR *retName
+    );
+    HRESULT BufferGetData(
+        [in] D3DXBuffer *buffer,
+        [in] LONG index,
+        [in] LONG typesize,
+        [in] LONG typecount,
+        [in, out] void *data
+    );
+    HRESULT BufferSetData(
+        [in] D3DXBuffer *buffer,
+        [in] LONG index,
+        [in] LONG typesize,
+        [in] LONG typecount,
+        [in, out] void *data
+    );
+    HRESULT Intersect(
+        [in] D3DXMesh *meshIn,
+        [in] D3DVECTOR *rayPos,
+        [in] D3DVECTOR *rayDir,
+        [out] LONG *retHit,
+        [out] LONG *retFaceIndex,
+        [out] float *u,
+        [out] float *v,
+        [out] float *retDist,
+        [out] LONG *countHits,
+        [out, retval] D3DXBuffer **allHits
+    );
+    HRESULT SphereBoundProbe(
+        [in] D3DVECTOR *center,
+        [in] float radius,
+        [in] D3DVECTOR *rayPosition,
+        [in] D3DVECTOR *rayDirection,
+        [out, retval] VARIANT_BOOL *retHit
+    );
+    HRESULT ComputeBoundingSphereFromMesh(
+        [in] D3DXMesh *meshIn,
+        [in, out] D3DVECTOR *centers,
+        [in, out] float *radiusArray
+    );
+    HRESULT ComputeBoundingBoxFromMesh(
+        [in] D3DXMesh *meshIn,
+        [in, out] D3DVECTOR *minArray,
+        [in, out] D3DVECTOR *maxArray
+    );
+    HRESULT CreateSkinMesh(
+        [in] LONG numFaces,
+        [in] LONG numVertices,
+        [in] LONG numBones,
+        [in] LONG options,
+        [in] void *declaration,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXSkinMesh **ppSkinMesh
+    );
+    HRESULT CreateSkinMeshFVF(
+        [in] LONG numFaces,
+        [in] LONG numVertices,
+        [in] LONG numBones,
+        [in] LONG options,
+        [in] LONG fvf,
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXSkinMesh **ppSkinMesh
+    );
+    HRESULT CreateSkinMeshFromMesh(
+        [in] D3DXMesh *mesh,
+        [in] LONG numBones,
+        [out, retval] D3DXSkinMesh **ppSkinMesh
+    );
+    HRESULT LoadSkinMeshFromXof(
+        [in] IUnknown *xofobjMesh,
+        [in] LONG options,
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **adjacencyOut,
+        [in, out] D3DXBuffer **materialsOut,
+        [in, out] LONG *numMatOut,
+        [in, out] D3DXBuffer **boneNamesOut,
+        [in, out] D3DXBuffer **boneTransformsOut,
+        [out, retval] D3DXSkinMesh **ppMesh
+    );
+    HRESULT CreatePolygon(
+        [in] Direct3DDevice8 *device,
+        [in] float length,
+        [in] LONG sides,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateBox(
+        [in] Direct3DDevice8 *device,
+        [in] float width,
+        [in] float height,
+        [in] float depth,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateCylinder(
+        [in] Direct3DDevice8 *device,
+        [in] float radius1,
+        [in] float radius2,
+        [in] float length,
+        [in] LONG slices,
+        [in] LONG stacks,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateSphere(
+        [in] Direct3DDevice8 *device,
+        [in] float radius,
+        [in] LONG slices,
+        [in] LONG stacks,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateTorus(
+        [in] Direct3DDevice8 *device,
+        [in] float innerRadius,
+        [in] float outerRadius,
+        [in] LONG sides,
+        [in] LONG rings,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateTeapot(
+        [in] Direct3DDevice8 *device,
+        [in, out] D3DXBuffer **retAdjacency,
+        [out, retval] D3DXMesh **retMesh
+    );
+    HRESULT CreateText(
+        [in] Direct3DDevice8 *device,
+        [in] LONG hDC,
+        [in] BSTR text,
+        [in] float deviation,
+        [in] float extrusion,
+        [in, out] D3DXMesh **retMesh,
+        [in, out] D3DXBuffer **adjacencyOut,
+        [in, out] void *glyphMetrics
+    );
+    HRESULT BufferGetBoneName(
+        [in] D3DXBuffer *boneNameBuffer,
+        [in] LONG index,
+        [out, retval] BSTR *retName
+    );
+    HRESULT CreateSprite(
+        [in] Direct3DDevice8 *device,
+        [out, retval] D3DXSprite **retSprite
+    );
+    HRESULT CreateRenderToSurface(
+        [in] Direct3DDevice8 *device,
+        [in] LONG width,
+        [in] LONG height,
+        [in] D3DFORMAT format,
+        [in] LONG depthStencil,
+        [in] D3DFORMAT depthStencilFormat,
+        [out, retval] D3DXRenderToSurface **retRenderToSurface
+    );
+    HRESULT CleanMesh(
+        [in] D3DXMesh *meshIn,
+        [in] void *adjacency,
+        [in, out] BSTR *log,
+        [in, out] D3DXBuffer *adjacencyOut,
+        [out, retval] D3DXMesh **meshOut
+    );
+    HRESULT ValidMesh(
+        [in] D3DXMesh *meshIn,
+        [in] void *adjacency,
+        [in, out, optional] BSTR *log,
+        [out, retval] VARIANT_BOOL *ret
+    );
+    HRESULT BoxBoundProbe(
+        [in] D3DVECTOR *minVert,
+        [in] D3DVECTOR *maxVert,
+        [in] D3DVECTOR *rayPosition,
+        [in] D3DVECTOR *rayDirection,
+        [out, retval] VARIANT_BOOL *ret
+    );
+    HRESULT SavePMeshToFile(
+        [in] BSTR filename,
+        [in] D3DXPMesh *mesh,
+        [in] D3DXMATERIAL *materialArray,
+        [in] LONG materialCount
+    );
+    HRESULT LoadPMeshFromFile(
+        [in] BSTR filename,
+        [in] LONG options,
+        [in] Direct3DDevice8 *device,
+        [out] D3DXBuffer **retMaterials,
+        [out] LONG *retNumMaterials,
+        [out, retval] D3DXPMesh **retPMesh
+    );
+    HRESULT BufferGetBoneCombo(
+        [in] D3DXBuffer *boneComboBuffer,
+        [in] LONG index,
+        [in, out] D3DXBONECOMBINATION *boneCombo
+    );
+    HRESULT BufferGetBoneComboBoneIds(
+        [in] D3DXBuffer *boneComboBuffer,
+        [in] LONG index,
+        [in] LONG paletteSize,
+        [in] void *boneIds
+    );
+    HRESULT SaveSurfaceToFile(
+        [in] BSTR destFile,
+        [in] D3DXIMAGE_FILEFORMAT destFormat,
+        [in] Direct3DSurface8 *srcSurface,
+        [in] PALETTEENTRY *srcPalette,
+        [in] RECT *srcRect
+    );
+    HRESULT SaveVolumeToFile(
+        [in] BSTR destFile,
+        [in] D3DXIMAGE_FILEFORMAT destFormat,
+        [in] Direct3DVolume8 *srcVolume,
+        [in] PALETTEENTRY *srcPalette,
+        [in] void *srcBox
+    );
+    HRESULT SaveTextureToFile(
+        [in] BSTR destFile,
+        [in] D3DXIMAGE_FILEFORMAT destFormat,
+        [in] Direct3DBaseTexture8 *srcTexture,
+        [in] PALETTEENTRY *srcPalette
+    );
+};
+
+[
+    uuid(58356c5d-0bfd-48ed-93c5-f4520b6233de),
+    helpstring("D3DX8"),
+    threading(both)
+]
+coclass D3DX8 { interface ID3DX8; };
-- 
2.14.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.