00001 #pragma once
00002
00008 #include "..\stdafx.h"
00009
00010 #include "common++.h"
00011
00012 #include <d3d9.h>
00013 #include <d3dx9.h>
00014 #include <dxerr.h>
00015
00016
00017 #ifndef DIRECTINPUT_VERSION
00018 #define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION // 0x0800
00019 #endif
00020 #include <dinput.h>
00021
00022 #include "Gdata.h"
00023
00024
00025
00026 namespace jbxwl {
00027
00028
00029 extern LPDIRECT3D9 GpD3D;
00030 extern LPDIRECTINPUT8 GpDInput;
00031
00032 extern LPDIRECTINPUTDEVICE8 GpDMouse;
00033 extern LPDIRECTINPUTDEVICE8 GpDKeyBoard;
00034
00035 extern BOOL Dx9DividePrimitiveMode;
00036 extern BOOL Dx9ReverseZMode;
00037
00038 #define CDXRELEASE(d) if((d)!=NULL){while((d)->Release());(d)=NULL;} // 完全リーリス(つまり削除)
00039 #define DXRELEASE(d) if((d)!=NULL){(d)->Release();(d)=NULL;}
00040
00041 #define DXMAXPRIMITIVE 32768
00042
00043
00044 BOOL Dx9CreateInterface(CWinApp* wapp);
00045 void Dx9ReleaseInterface();
00046
00047 LPDIRECT3DDEVICE9 Dx9CreateGraphic(LPDIRECT3D9, D3DPRESENT_PARAMETERS*, HWND);
00048 LPDIRECTINPUTDEVICE8 Dx9CreateMouse(LPDIRECTINPUT8, HWND);
00049 LPDIRECTINPUTDEVICE8 Dx9CreateKeyBoard(LPDIRECTINPUT8, HWND);
00050
00051 POINT Dx9GetBackBuffer(LPDIRECT3DDEVICE9, LPDIRECT3DSURFACE9*);
00052 BOOL Dx9SurfaceFromMemory(LPDIRECT3DDEVICE9, LPDIRECT3DSURFACE9*, CmnHead);
00053 BOOL Dx9TextureFromMemory(LPDIRECT3DDEVICE9, LPDIRECT3DTEXTURE9*, CmnHead);
00054
00055 BOOL Dx9SurfaceFromByteMemory(LPDIRECT3DDEVICE9, LPDIRECT3DSURFACE9*, CmnHead);
00056 BOOL Dx9SurfaceFromMemoryFile(LPDIRECT3DDEVICE9, LPDIRECT3DSURFACE9*, CmnHead);
00057 BOOL Dx9TextureFromByteMemory(LPDIRECT3DDEVICE9, LPDIRECT3DTEXTURE9*, CmnHead);
00058 BOOL Dx9TextureFromMemoryFile(LPDIRECT3DDEVICE9, LPDIRECT3DTEXTURE9*, CmnHead);
00059
00060 HRESULT Dx9DrawPrimitive(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, UINT, UINT);
00061 POINT Dx9GetSurfaceSize(LPDIRECT3DSURFACE9* lpsf);
00062
00063
00064
00065
00066 inline D3DCOLOR Dx9Word2RGBA(uWord pp)
00067 {
00068 int r, g, b, a;
00069
00070 if (isBigEndian) {
00071 r = (int)((pp&0xf000)>>12);
00072 g = (int)((pp&0x0f00)>>8);
00073 b = (int)((pp&0x00f0)>>4);
00074 a = (int) (pp&0x000f);
00075 }
00076 else {
00077 b = (int)((pp&0xf000)>>12);
00078 a = (int)((pp&0x0f00)>>8);
00079 r = (int)((pp&0x00f0)>>4);
00080 g = (int) (pp&0x000f);
00081 }
00082
00083 return D3DCOLOR_RGBA(r*17, g*17, b*17, a*17);
00084 }
00085
00086
00087
00088 inline D3DCOLOR Dx9Word2ARGB(uWord pp)
00089 {
00090 int r, g, b, a;
00091
00092 if (isBigEndian) {
00093 a = (int)((pp&0xf000)>>12);
00094 r = (int)((pp&0x0f00)>>8);
00095 g = (int)((pp&0x00f0)>>4);
00096 b = (int) (pp&0x000f);
00097 }
00098 else {
00099 g = (int)((pp&0xf000)>>12);
00100 b = (int)((pp&0x0f00)>>8);
00101 a = (int)((pp&0x00f0)>>4);
00102 r = (int) (pp&0x000f);
00103 }
00104
00105 return D3DCOLOR_ARGB(a*17, r*17, g*17, b*17);
00106 }
00107
00108
00109
00110 inline D3DCOLOR Dx9Word2RGB(uWord pp)
00111 {
00112 int r, g, b;
00113
00114 if (isLittleEndian) swap_byte(&pp, 2, 2);
00115
00116 r = (int)((pp&0xf800)>>11);
00117 g = (int)((pp&0x07e0)>>5);
00118 b = (int) (pp&0x001f);
00119
00120 return D3DCOLOR_XRGB((int)(r*8.23), (int)(g*4.05), (int)(b*8.23));
00121 }
00122
00123
00124
00134 }