ここではCDDPro90に実装されている各関数の詳細について説明しています。
CDDPro90ライブラリは例えば初期化に失敗したにも関わらずそのまま描画処理を行おうとしたり、
インデックスをオーバーして参照しようとした場合でも、ソフトがクラッシュしないように常にチェックが行われています。
※一部の関数はチェックされません
各関数は基本的にBOOL値が戻り値になっており、失敗時はFALSEが返るようになっているので、
描画がされなかったりする場合はこの戻り値を確認してみるとよいかもしれません。
CDDPro90は内部では右手系として処理しています。
このライブラリを単に2D表示用に使用するだけであれば、特に何も気にする必要はありません。
CDDPro90ライブラリは内部でCDDTexPro90ライブラリを使用しています。
CDDTexPro90はテクスチャのロードなどを管理するクラスで、基本的にはプログラム側から直接扱う必要はありません。
また、デバッグ出力用にDEBUG.HとDEBUG.CPPが必要です。
デフォルトではCDDPro90ライブラリはデバッグ出力されない設定になっていますが、
cppの先頭にある「#define DEBUG」のコメントを外すことで、
デバッグライブラリが初期化されていればエラーなどを出力することが出来ます。
#include "CDDPro90.h"
CDDPro90 dd;
CDDPro90 *dd = new CDDPro90();
※この場合はdeleteを忘れないようにしてください// 640x480の32bitカラー、VSync待ちありで初期化 if( !dd.Create(hWnd,TRUE,640,480,32,0,TRUE) ) { // エラー }初期化が完了したらあとは自由にテクスチャをロードしたり描画処理を行うことが出来るようになります。
// 0番目に画像をロード if( !dd.AddTexture(0,"BACK.BMP") ) return FALSE; // エラー番号は最大でCDDMAXTEXTURE-1まで指定することが出来るため、同時に何枚でもロードすることが出来ます。
dd.SetPutRange( 0,0,0,0,128,480 ); // 背景 dd.SetPutRange( 1,0,224,0,256,256 ); // センターアニメーション dd.SetPutRange( 10,0,130,0,28,419 ); // 白 dd.SetPutRange( 11,0,160,0,24,419 ); // 青 dd.SetPutRange( 12,0,186,0,35,419 ); // 赤 dd.SetPutRange( 15,0,130,422,28,6 ); // 白 dd.SetPutRange( 16,0,160,422,24,6 ); // 青 dd.SetPutRange( 17,0,186,422,35,6 ); // 赤最初の引数は切り抜きIDで、値はCDDMAXOBJECT-1まで指定することが出来ます。
dd.CheckDevice(); dd.DrawBegin(); dd.Put( 0,100,50 ); dd.DrawEnd();例えばフルスクリーンで起動している時、ALT+TABなどでWindowsに戻ってくるとDirect3Dはロスト状態となります。
dd.DrawBegin();
dd.SetPutStatus( 0,0.5f );
dd.Put( 0,100,50 );
dd.DrawEnd();
dd.Delete();
各関数をクリックするとその詳細が表示されます。
BOOL Create( HWND hwnd, BOOL full=TRUE, int w=1024, int h=768, int bit=32, int freq=0, BOOL vsync=TRUE, DWORD vs=D3DVS_VERSION(0,0), DWORD ps=D3DPS_VERSION(0,0) );
BOOL Delete(
void
);
BOOL Clear(
void
);
BOOL SetHand( BOOL right=TRUE );
void SetBackColor(
D3DCOLOR col=0x000000
);
BOOL SetPlugin( const char *path, const char *ext );
BOOL AddTexture( int id, const char *file );
BOOL AddTexture( int id, const LPVOID buf, int size );
BOOL DelTexture( int id );
BOOL SetPutRange( int id, int tex_id, int x, int y, int w, int h, int ox=0, int oy=0 );
BOOL SetPutStatus( int id, float alpha=1.0f, float scale=1.0f, float rot=0.0f );
BOOL SetPutStatusEx( int id, float alpha=1.0f, float scale_x=1.0f, float scale_y=1.0f, float rot=0.0f );
BOOL CheckDevice(
void
);
BOOL DrawBegin( BOOL clear=TRUE );
BOOL DrawEnd(
void
);
BOOL Put( int id,float x,float y );
BOOL Put2( int id,float x,float y );
BOOL PutEx( int id,float x,float y,float ox,float oy );
BOOL SetBlendOne( BOOL on=TRUE );
BOOL SetRenderState( D3DRENDERSTATETYPE type,DWORD flag );
BOOL SetTextureStageState( DWORD st,D3DTEXTURESTAGESTATETYPE type,DWORD val );
inline LPDIRECT3DDEVICE9 GetD3DDevice( void );
operator LPDIRECT3DDEVICE9( void );
const D3DCAPS9 *GetD3DCaps( void );
CDDTexPro90 *GetTexClass( int id );