mirror of
https://github.com/libretro/RetroArch
synced 2025-01-29 09:32:52 +00:00
bfc366decc
Example: find . -type f -iname '*.c' | while read -r i; do cat -s "$i" > "$i.new" mv "$i.new" "$i" done
528 lines
15 KiB
C
528 lines
15 KiB
C
/*
|
|
*
|
|
* Copyright (C) Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: d3dx8core.h
|
|
* Content: D3DX core types and functions
|
|
*/
|
|
|
|
#include "d3dx8.h"
|
|
|
|
#ifndef __D3DX8CORE_H__
|
|
#define __D3DX8CORE_H__
|
|
|
|
/*
|
|
* ID3DXBuffer:
|
|
* ------------
|
|
* The buffer object is used by D3DX to return arbitrary size data.
|
|
*
|
|
* GetBufferPointer -
|
|
* Returns a pointer to the beginning of the buffer.
|
|
*
|
|
* GetBufferSize -
|
|
* Returns the size of the buffer, in bytes.
|
|
*/
|
|
|
|
typedef interface ID3DXBuffer ID3DXBuffer;
|
|
typedef interface ID3DXBuffer *LPD3DXBUFFER;
|
|
|
|
/* {932E6A7E-C68E-45dd-A7BF-53D19C86DB1F} */
|
|
DEFINE_GUID(IID_ID3DXBuffer,
|
|
0x932e6a7e, 0xc68e, 0x45dd, 0xa7, 0xbf, 0x53, 0xd1, 0x9c, 0x86, 0xdb, 0x1f);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXBuffer
|
|
|
|
DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
|
|
{
|
|
/* IUnknown */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
/* ID3DXBuffer */
|
|
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
|
|
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
|
|
};
|
|
|
|
/*
|
|
* ID3DXFont:
|
|
* ----------
|
|
* Font objects contain the textures and resources needed to render
|
|
* a specific font on a specific device.
|
|
*
|
|
* Begin -
|
|
* Prepartes device for drawing text. This is optional.. if DrawText
|
|
* is called outside of Begin/End, it will call Begin and End for you.
|
|
*
|
|
* DrawText -
|
|
* Draws formatted text on a D3D device. Some parameters are
|
|
* surprisingly similar to those of GDI's DrawText function. See GDI
|
|
* documentation for a detailed description of these parameters.
|
|
*
|
|
* End -
|
|
* Restores device state to how it was when Begin was called.
|
|
*
|
|
* OnLostDevice, OnResetDevice -
|
|
* Call OnLostDevice() on this object before calling Reset() on the
|
|
* device, so that this object can release any stateblocks and video
|
|
* memory resources. After Reset(), the call OnResetDevice().
|
|
*
|
|
*/
|
|
|
|
typedef interface ID3DXFont ID3DXFont;
|
|
typedef interface ID3DXFont *LPD3DXFONT;
|
|
|
|
/* {89FAD6A5-024D-49af-8FE7-F51123B85E25} */
|
|
DEFINE_GUID( IID_ID3DXFont,
|
|
0x89fad6a5, 0x24d, 0x49af, 0x8f, 0xe7, 0xf5, 0x11, 0x23, 0xb8, 0x5e, 0x25);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXFont
|
|
|
|
DECLARE_INTERFACE_(ID3DXFont, IUnknown)
|
|
{
|
|
/* IUnknown */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
/* ID3DXFont */
|
|
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
|
|
STDMETHOD(GetLogFont)(THIS_ LOGFONT* pLogFont) PURE;
|
|
|
|
STDMETHOD(Begin)(THIS) PURE;
|
|
STDMETHOD_(INT, DrawTextA)(THIS_ LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
|
|
STDMETHOD_(INT, DrawTextW)(THIS_ LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
|
|
STDMETHOD(End)(THIS) PURE;
|
|
|
|
STDMETHOD(OnLostDevice)(THIS) PURE;
|
|
STDMETHOD(OnResetDevice)(THIS) PURE;
|
|
};
|
|
|
|
#ifndef DrawText
|
|
#ifdef UNICODE
|
|
#define DrawText DrawTextW
|
|
#else
|
|
#define DrawText DrawTextA
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
HRESULT WINAPI
|
|
D3DXCreateFont(
|
|
LPDIRECT3DDEVICE8 pDevice,
|
|
HFONT hFont,
|
|
LPD3DXFONT* ppFont);
|
|
|
|
HRESULT WINAPI
|
|
D3DXCreateFontIndirect(
|
|
LPDIRECT3DDEVICE8 pDevice,
|
|
CONST LOGFONT* pLogFont,
|
|
LPD3DXFONT* ppFont);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* ID3DXSprite:
|
|
* ------------
|
|
* This object intends to provide an easy way to drawing sprites using D3D.
|
|
*
|
|
* Begin -
|
|
* Prepares device for drawing sprites
|
|
*
|
|
* Draw, DrawAffine, DrawTransform -
|
|
* Draws a sprite in screen-space. Before transformation, the sprite is
|
|
* the size of SrcRect, with its top-left corner at the origin (0,0).
|
|
* The color and alpha channels are modulated by Color.
|
|
*
|
|
* End -
|
|
* Restores device state to how it was when Begin was called.
|
|
*
|
|
* OnLostDevice, OnResetDevice -
|
|
* Call OnLostDevice() on this object before calling Reset() on the
|
|
* device, so that this object can release any stateblocks and video
|
|
* memory resources. After Reset(), the call OnResetDevice().
|
|
*/
|
|
|
|
typedef interface ID3DXSprite ID3DXSprite;
|
|
typedef interface ID3DXSprite *LPD3DXSPRITE;
|
|
|
|
/* {13D69D15-F9B0-4e0f-B39E-C91EB33F6CE7} */
|
|
DEFINE_GUID( IID_ID3DXSprite,
|
|
0x13d69d15, 0xf9b0, 0x4e0f, 0xb3, 0x9e, 0xc9, 0x1e, 0xb3, 0x3f, 0x6c, 0xe7);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXSprite
|
|
|
|
DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
|
|
{
|
|
/* IUnknown */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
/* ID3DXSprite */
|
|
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
|
|
|
|
STDMETHOD(Begin)(THIS) PURE;
|
|
|
|
STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE8 pSrcTexture,
|
|
CONST RECT* pSrcRect, CONST D3DXVECTOR2* pScaling,
|
|
CONST D3DXVECTOR2* pRotationCenter, FLOAT Rotation,
|
|
CONST D3DXVECTOR2* pTranslation, D3DCOLOR Color) PURE;
|
|
|
|
STDMETHOD(DrawTransform)(THIS_ LPDIRECT3DTEXTURE8 pSrcTexture,
|
|
CONST RECT* pSrcRect, CONST D3DXMATRIX* pTransform,
|
|
D3DCOLOR Color) PURE;
|
|
|
|
STDMETHOD(End)(THIS) PURE;
|
|
|
|
STDMETHOD(OnLostDevice)(THIS) PURE;
|
|
STDMETHOD(OnResetDevice)(THIS) PURE;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
HRESULT WINAPI
|
|
D3DXCreateSprite(
|
|
LPDIRECT3DDEVICE8 pDevice,
|
|
LPD3DXSPRITE* ppSprite);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* ID3DXRenderToSurface:
|
|
* ---------------------
|
|
* This object abstracts rendering to surfaces. These surfaces do not
|
|
* necessarily need to be render targets. If they are not, a compatible
|
|
* render target is used, and the result copied into surface at end scene.
|
|
*
|
|
* BeginScene, EndScene -
|
|
* Call BeginScene() and EndScene() at the beginning and ending of your
|
|
* scene. These calls will setup and restore render targets, viewports,
|
|
* etc..
|
|
*
|
|
* OnLostDevice, OnResetDevice -
|
|
* Call OnLostDevice() on this object before calling Reset() on the
|
|
* device, so that this object can release any stateblocks and video
|
|
* memory resources. After Reset(), the call OnResetDevice().
|
|
*/
|
|
|
|
typedef struct _D3DXRTS_DESC
|
|
{
|
|
UINT Width;
|
|
UINT Height;
|
|
D3DFORMAT Format;
|
|
BOOL DepthStencil;
|
|
D3DFORMAT DepthStencilFormat;
|
|
|
|
} D3DXRTS_DESC;
|
|
|
|
typedef interface ID3DXRenderToSurface ID3DXRenderToSurface;
|
|
typedef interface ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
|
|
|
|
/* {82DF5B90-E34E-496e-AC1C-62117A6A5913} */
|
|
DEFINE_GUID( IID_ID3DXRenderToSurface,
|
|
0x82df5b90, 0xe34e, 0x496e, 0xac, 0x1c, 0x62, 0x11, 0x7a, 0x6a, 0x59, 0x13);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXRenderToSurface
|
|
|
|
DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
|
|
{
|
|
/* IUnknown */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
/* ID3DXRenderToSurface */
|
|
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
|
|
STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC* pDesc) PURE;
|
|
|
|
STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE8 pSurface, CONST D3DVIEWPORT8* pViewport) PURE;
|
|
STDMETHOD(EndScene)(THIS) PURE;
|
|
|
|
STDMETHOD(OnLostDevice)(THIS) PURE;
|
|
STDMETHOD(OnResetDevice)(THIS) PURE;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
HRESULT WINAPI
|
|
D3DXCreateRenderToSurface(
|
|
LPDIRECT3DDEVICE8 pDevice,
|
|
UINT Width,
|
|
UINT Height,
|
|
D3DFORMAT Format,
|
|
BOOL DepthStencil,
|
|
D3DFORMAT DepthStencilFormat,
|
|
LPD3DXRENDERTOSURFACE* ppRenderToSurface);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* ID3DXRenderToEnvMap:
|
|
* --------------------
|
|
* This object abstracts rendering to environment maps. These surfaces
|
|
* do not necessarily need to be render targets. If they are not, a
|
|
* compatible render target is used, and the result copied into the
|
|
* environment map at end scene.
|
|
*
|
|
* BeginCube, BeginSphere, BeginHemisphere, BeginParabolic -
|
|
* This function initiates the rendering of the environment map. As
|
|
* parameters, you pass the textures in which will get filled in with
|
|
* the resulting environment map.
|
|
*
|
|
* Face -
|
|
* Call this function to initiate the drawing of each face. For each
|
|
* environment map, you will call this six times.. once for each face
|
|
* in D3DCUBEMAP_FACES.
|
|
*
|
|
* End -
|
|
* This will restore all render targets, and if needed compose all the
|
|
* rendered faces into the environment map surfaces.
|
|
*
|
|
* OnLostDevice, OnResetDevice -
|
|
* Call OnLostDevice() on this object before calling Reset() on the
|
|
* device, so that this object can release any stateblocks and video
|
|
* memory resources. After Reset(), the call OnResetDevice().
|
|
*/
|
|
|
|
typedef struct _D3DXRTE_DESC
|
|
{
|
|
UINT Size;
|
|
D3DFORMAT Format;
|
|
BOOL DepthStencil;
|
|
D3DFORMAT DepthStencilFormat;
|
|
} D3DXRTE_DESC;
|
|
|
|
typedef interface ID3DXRenderToEnvMap ID3DXRenderToEnvMap;
|
|
typedef interface ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
|
|
|
|
/* {4E42C623-9451-44b7-8C86-ABCCDE5D52C8} */
|
|
DEFINE_GUID( IID_ID3DXRenderToEnvMap,
|
|
0x4e42c623, 0x9451, 0x44b7, 0x8c, 0x86, 0xab, 0xcc, 0xde, 0x5d, 0x52, 0xc8);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXRenderToEnvMap
|
|
|
|
DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
|
|
{
|
|
/* IUnknown */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
/* ID3DXRenderToEnvMap */
|
|
STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
|
|
STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC* pDesc) PURE;
|
|
|
|
STDMETHOD(BeginCube)(THIS_
|
|
LPDIRECT3DCUBETEXTURE8 pCubeTex) PURE;
|
|
|
|
STDMETHOD(BeginSphere)(THIS_
|
|
LPDIRECT3DTEXTURE8 pTex) PURE;
|
|
|
|
STDMETHOD(BeginHemisphere)(THIS_
|
|
LPDIRECT3DTEXTURE8 pTexZPos,
|
|
LPDIRECT3DTEXTURE8 pTexZNeg) PURE;
|
|
|
|
STDMETHOD(BeginParabolic)(THIS_
|
|
LPDIRECT3DTEXTURE8 pTexZPos,
|
|
LPDIRECT3DTEXTURE8 pTexZNeg) PURE;
|
|
|
|
STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES Face) PURE;
|
|
STDMETHOD(End)(THIS) PURE;
|
|
|
|
STDMETHOD(OnLostDevice)(THIS) PURE;
|
|
STDMETHOD(OnResetDevice)(THIS) PURE;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
HRESULT WINAPI
|
|
D3DXCreateRenderToEnvMap(
|
|
LPDIRECT3DDEVICE8 pDevice,
|
|
UINT Size,
|
|
D3DFORMAT Format,
|
|
BOOL DepthStencil,
|
|
D3DFORMAT DepthStencilFormat,
|
|
LPD3DXRenderToEnvMap* ppRenderToEnvMap);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* Shader assemblers:
|
|
*/
|
|
|
|
/*
|
|
* D3DXASM flags:
|
|
* --------------
|
|
*
|
|
* D3DXASM_DEBUG
|
|
* Generate debug info.
|
|
*
|
|
* D3DXASM_SKIPVALIDATION
|
|
* Do not validate the generated code against known capabilities and
|
|
* constraints. This option is only recommended when assembling shaders
|
|
* you KNOW will work. (ie. have assembled before without this option.)
|
|
*/
|
|
|
|
#define D3DXASM_DEBUG (1 << 0)
|
|
#define D3DXASM_SKIPVALIDATION (1 << 1)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* D3DXAssembleShader:
|
|
* -------------------
|
|
* Assembles an ascii description of a vertex or pixel shader into
|
|
* binary form.
|
|
*
|
|
* Parameters:
|
|
* pSrcFile
|
|
* Source file name
|
|
* hSrcModule
|
|
* Module handle. if NULL, current module will be used.
|
|
* pSrcResource
|
|
* Resource name in module
|
|
* pSrcData
|
|
* Pointer to source code
|
|
* SrcDataLen
|
|
* Size of source code, in bytes
|
|
* Flags
|
|
* D3DXASM_xxx flags
|
|
* ppConstants
|
|
* Returns an ID3DXBuffer object containing constant declarations.
|
|
* ppCompiledShader
|
|
* Returns an ID3DXBuffer object containing the object code.
|
|
* ppCompilationErrors
|
|
* Returns an ID3DXBuffer object containing ascii error messages
|
|
*/
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromFileA(
|
|
LPCSTR pSrcFile,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppConstants,
|
|
LPD3DXBUFFER* ppCompiledShader,
|
|
LPD3DXBUFFER* ppCompilationErrors);
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromFileW(
|
|
LPCWSTR pSrcFile,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppConstants,
|
|
LPD3DXBUFFER* ppCompiledShader,
|
|
LPD3DXBUFFER* ppCompilationErrors);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileW
|
|
#else
|
|
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileA
|
|
#endif
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromResourceA(
|
|
HMODULE hSrcModule,
|
|
LPCSTR pSrcResource,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppConstants,
|
|
LPD3DXBUFFER* ppCompiledShader,
|
|
LPD3DXBUFFER* ppCompilationErrors);
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromResourceW(
|
|
HMODULE hSrcModule,
|
|
LPCWSTR pSrcResource,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppConstants,
|
|
LPD3DXBUFFER* ppCompiledShader,
|
|
LPD3DXBUFFER* ppCompilationErrors);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceW
|
|
#else
|
|
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceA
|
|
#endif
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShader(
|
|
LPCVOID pSrcData,
|
|
UINT SrcDataLen,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppConstants,
|
|
LPD3DXBUFFER* ppCompiledShader,
|
|
LPD3DXBUFFER* ppCompilationErrors);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* Misc APIs:
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* D3DXGetErrorString:
|
|
* ------------------
|
|
* Returns the error string for given an hresult. Interprets all D3DX and
|
|
* D3D hresults.
|
|
*
|
|
* Parameters:
|
|
* hr
|
|
* The error code to be deciphered.
|
|
* pBuffer
|
|
* Pointer to the buffer to be filled in.
|
|
* BufferLen
|
|
* Count of characters in buffer. Any error message longer than this
|
|
* length will be truncated to fit.
|
|
*/
|
|
HRESULT WINAPI
|
|
D3DXGetErrorStringA(
|
|
HRESULT hr,
|
|
LPSTR pBuffer,
|
|
UINT BufferLen);
|
|
|
|
HRESULT WINAPI
|
|
D3DXGetErrorStringW(
|
|
HRESULT hr,
|
|
LPWSTR pBuffer,
|
|
UINT BufferLen);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXGetErrorString D3DXGetErrorStringW
|
|
#else
|
|
#define D3DXGetErrorString D3DXGetErrorStringA
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* __D3DX8CORE_H__ */
|