📄 drawex.h
字号:
////////////////////////////////////////////////////////////////////////////////////////
//
// File. CDrawEx.h
// Note.
// ..by kallru
//
////////////////////////////////////////////////////////////////////////////////////////
#ifndef _CDRAWEX_
#define _CDRAWEX_
struct SPRITE_VERTEX
{
float x,y,z;
float u,v;
};
struct MULTI_SPRITE_VERTEX
{
float x,y,z;
float u1,v1;
float u2,v2;
float u3,v3;
};
struct SPRITE_TEXTURE
{
LPDIRECT3DTEXTURE9 pTex;
char szSpriteName[256];
int m_iWidth;
int m_iHeight;
SPRITE_TEXTURE()
{
pTex = NULL;
m_iWidth = 0;
m_iHeight = 0;
}
~SPRITE_TEXTURE()
{
if(pTex != NULL)
SAFE_RELEASE(pTex);
ZeroMemory(szSpriteName,sizeof(szSpriteName));
}
};
struct BACK_TEXTURE
{
SPRITE_TEXTURE SprTexture[12];
};
#define D3DFVF_SPRITEVERTEX ( D3DFVF_XYZ | D3DFVF_TEX1)
#define D3DFVF_MULTIVERTEX (D3DFVF_XYZ | D3DFVF_TEX3 )
#define FILL_MULTIVERTEX( v, ax, ay, az, atu1, atv1, atu2, atv2, atu3, atv3 ) \
{ \
v.x = ax; v.y = ay; v.z = az; v.u1 = atu1; v.v1 = atv1; \
v.u2 = atu2; v.v2 = atv2; v.u3 = atu3; v.v3 = atv3; \
}
//#define FILL_MULTIVERTEX( v, ax, ay, az, atu1, atv1, atu2, atv2, atu3, atv3 ) \
//{ v.x = ax; v.y = ay; v.z = az; v.u1 = atu1; v.v1 = atv1; v.u2 = atu2; v.v2 = atv2; }
class CDrawEx
{
public:
CDrawEx();
CDrawEx(LPDIRECT3DDEVICE9 pd3dDevice);
~CDrawEx();
void Release();
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
//
// 观俊辑 荤侩且 窃荐甸
//
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
HRESULT LoadImageFile(char *FileName, SPRITE_TEXTURE *pTexture, D3DCOLOR KeyColor=D3DCOLOR_XRGB(255,0,255)); //metaljack 距埃 荐沥
SPRITE_TEXTURE* LoadImageFileEx(char *FileName, D3DCOLOR KeyColor=D3DCOLOR_XRGB(255,0,255)); //metaljack 距埃 荐沥
void ReleaseImageFile();
HRESULT InitDevice(LPDIRECT3DDEVICE9 pd3dDevice);
SPRITE_TEXTURE* FindTexture(char *FileName);
HRESULT CreateSpriteBuffer();
void DrawSpriteEx(SPRITE_TEXTURE &pTexture, float x=0.0f, float y=0.0f, DWORD dwAlpha=255,
DWORD dwWidth=0, DWORD dwHeight=0,
float AngleX=0.0f, float AngleY=0.0f, float AngleZ=0.0f);
void SetMultiSpriteEx( float x=0.0f, float y=0.0f, DWORD dwWidth=0, DWORD dwHeight=0,
float AngleX=0.0f, float AngleY=0.0f, float AngleZ=0.0f);
HRESULT Lock(UINT iSize,void **pData, DWORD dwFlage=0) { return m_pVertexBuffer->Lock(0,iSize,pData,dwFlage); }
HRESULT Unlock() { return m_pVertexBuffer->Unlock(); }
LPDIRECT3DVERTEXBUFFER9 GetMultiVBSmall() { return m_pVtxMultiBufferSmall; }
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
//
// 救俊辑 荤侩窍瘤父, 观俊辑档 荤侩 且 荐 乐霸...
//
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
void DrawSprite(SPRITE_TEXTURE &pTexture, DWORD dwAlpha);
void DrawMultiSprite( SPRITE_TEXTURE * pTexture1, SPRITE_TEXTURE * pTexture2,
DWORD dwAlpha = 255, LPDIRECT3DVERTEXBUFFER9 lpVB = NULL );
void RotateSprite(float AngleX, float AngleY, float AngleZ, float x, float y);
void TranslateSprite(float x, float y, float z);
void ScaleSprite(DWORD dwWidth,DWORD dwHeight); //祈狼甫 困秦辑 DWORD
void DrawSpriteFadeOut(SPRITE_TEXTURE &pTexture, DWORD FadeTime, float x=0.0f, float y=0.0f, DWORD dwAlpha=255,
DWORD dwWidth=0, DWORD dwHeight=0,
float AngleX=0.0f, float AngleY=0.0f, float AngleZ=0.0f);
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-==-=-==-=-=-=-=-=-==-=-==-=-=-=-=-=-=-=-=-
//
// 扁鸥 鞘夸茄 蜡瓶~?
//
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-==-=-==-=-=-=-=-=-==-=-==-=-=-=-=-=-=-=-=-
// 舅颇蔼 荤侩 : dwColor 牢荐俊 D3DCOLOR_ARGB( A, R, G ,B ); 肺 林搁 凳.
void CreateFillRectangle(SPRITE_TEXTURE *pOut, int nWidth, int nHeight, DWORD dwColor);
void CreateFillRectangleEx(SPRITE_TEXTURE *pOut, int nWidth, int nHeight, DWORD dwColor, UINT MipLevels); // 褂饭骇 荤侩
void FillRectangle(int nX, int nY, int nWidth, int nHeight, DWORD dwColor=0xffffffff, float z=0.0f, float fAngle=0.0f);
// 硅版 弊府扁.
void LoadBackGround(char *FileName, BACK_TEXTURE *pTexture, DWORD Keycolor = D3DCOLOR_XRGB(255,0,255));
void DrawBackGround(BACK_TEXTURE &pTexture, DWORD dwAlpha);
void Draw2DLine(int isrcX, int isrcY, int idestX, int idestY, DWORD dwColor1, DWORD dwColor2 = NULL);
void Draw2DBox(int isrcX, int isrcY, int idestX, int idestY, int Border, DWORD dwColor1, DWORD dwColor2 = NULL);
void ReturnToVertexBuffer();
void DrawSpriteMoveToRotateCenter(SPRITE_TEXTURE &pTexture, float x, float y, float centerX, float centerY, float centerZ,
DWORD dwAlpha=255, DWORD dwWidth=0, DWORD dwHeight=0,
float AngleX=0.0f, float AngleY=0.0f, float AngleZ=0.0f);
void DrawSpriteToHeap(SPRITE_TEXTURE &pTexture, float x, float y, DWORD dwAlpha,
float srcX, float srcY, float destX, float destY);
private:
LPDIRECT3DDEVICE9 m_pd3dDevice;
LPDIRECT3DVERTEXBUFFER9 m_pVertexBuffer;
LPDIRECT3DVERTEXBUFFER9 m_pVtxMultiBuffer;
LPDIRECT3DVERTEXBUFFER9 m_pVtxMultiBufferSmall;
LPDIRECT3DVERTEXBUFFER9 m_pVB_Line;
D3DXMATRIXA16 m_Rotation;
D3DXMATRIXA16 m_Translation;
D3DXMATRIXA16 m_Scaling;
// 橇肺璃记 青纺 2俺
//D3DXMATRIXA16 m_Proportion; // 厚啦 扁霖
D3DXMATRIXA16 m_Pixel; // 侨伎 扁霖
D3DXMATRIXA16 m_ViewMatrix; // 归诀侩
vector<SPRITE_TEXTURE *> m_vlSprite;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -