zdkdisplay.h
/* 2D initialization */
HRESULT WINAPI ZDKDisplay_Initialize();
HRESULT WINAPI ZDKDisplay_Cleanup();
/* System information */
HRESULT WINAPI ZDKDisplay_GetInfo(DWORD *screenWidth, DWORD *screenHeight);
/* Texture management */
HRESULT WINAPI ZDKDisplay_CreateTexture(DWORD width, DWORD height, HTEXTURE *texture);
HRESULT WINAPI ZDKDisplay_FreeTexture(HTEXTURE texture);
HRESULT WINAPI ZDKDisplay_GetTextureData(HTEXTURE texture, ZDK_RECT *rect, void *buffer, DWORD dataSize);
HRESULT WINAPI ZDKDisplay_GetTextureInfo(HTEXTURE texture, DWORD *width, DWORD *height);
HRESULT WINAPI ZDKDisplay_SetTextureData(HTEXTURE texture, ZDK_RECT *rect, void *buffer, DWORD dataSize);
HRESULT WINAPI ZDKDisplay_TextureLockRect(HTEXTURE texture, ZDK_TEXTURE_LOCK_INFO *info, ZDK_RECT *rect, ZDK_TEXTURE_LOCK_FLAGS flags);
HRESULT WINAPI ZDKDisplay_TextureUnlockRect(HTEXTURE texture);
/* Rendering */
HRESULT WINAPI ZDKDisplay_BeginScene();
HRESULT WINAPI ZDKDisplay_Clear(DWORD color);
HRESULT WINAPI ZDKDisplay_DrawSprites(ZDK_SPRITE *sprites, DWORD spriteCount);
HRESULT WINAPI ZDKDisplay_EndScene();
HRESULT WINAPI ZDKDisplay_Present();
HRESULT WINAPI ZDKDisplay_ResolveBackBuffer(HTEXTURE texture);
HRESULT WINAPI ZDKDisplay_SetBlendMode(ZDK_BLEND_MODE blendMode);
HRESULT WINAPI ZDKDisplay_SetClipRect(ZDK_RECT *rect);
HRESULT WINAPI ZDKDisplay_SetRenderTarget(HTEXTURE texture);
HRESULT WINAPI ZDKDisplay_SetTexture(HTEXTURE texture);
HRESULT WINAPI ZDKDisplay_SetTransform(ZDK_MATRIX *matrix);
/* ZDKDisplay_SetTextureFilter */
/* Types */
typedef float ZDK_MATRIX[4][4];
typedef struct {
int Left;
int Top;
int Right;
int Bottom;
} ZDK_RECT;
typedef enum {
BLEND_MODE_NONE,
BLEND_MODE_ALPHA_BLEND,
BLEND_MODE_ADDITIVE
} ZDK_BLEND_MODE;
typedef struct {
float X;
float Y;
float U;
float V;
} ZDK_VERTEXDATA;
typedef struct {
ZDK_VERTEXDATA Vertices[4];
DWORD Color;
} ZDK_SPRITE;
DECLARE_HANDLE(HTEXTURE);
typedef enum {
TEXTURE_LOCK_DEFAULT = 0x0,
TEXTURE_LOCK_READONLY = 0x10,
TEXTURE_LOCK_NOSYSLOCK = 0x800, /* questionable */
TEXTURE_LOCK_NOOVERWRITE = 0x1000, /* questionable */
TEXTURE_LOCK_DISCARD = 0x2000,
TEXTURE_LOCK_NO_DIRTY_UPDATE = 0x8000 /* questionable */
} ZDK_TEXTURE_LOCK_FLAGS;
typedef struct {
int Pitch;
DWORD *Buffer;
} ZDK_TEXTURE_LOCK_INFO;