[C++][DxLib]知っておくと便利な非公開関数
DxLibは、C++で書かれたDirectXのラッパライブラリです。
DXライブラリC言語の知識だけでゲームを作れるように設計されていて、プログラミング初心者でも簡単に扱えます。 私も普段Windows向けゲームを開発する時には、このDxLibを使用しています。簡単なゲームを作るのに、DirectX絡みで時間食うのは本末転倒ですし。
そんなDxLibですが、リファレンスに載っている関数群だけでは、ちょっと面倒になる場合があります。今回は、そんな時に知ってるとちょっと得するDxLibの非公開関数をご紹介します。
関数類は気づいた時に随時更新していきます。DxLibのバージョンによっては以下に紹介する関数類が存在しない場合もあります。
- 描画系
- 音声系
- ユーティリティ
DrawQuadrangle
int DrawQuadrangle(
int x1, int y1,
int x2, int y2,
int x3, int y3,
int x4, int y4,
int Color,
int FillFlag
);
DrawBoxのように四角形を描く関数ですが、こちらは4つの点を指定して描画します。四角形を回転させる場合に有用な関数で、特に塗りつぶしする場合に有効です(線だけならDrawLine×4でもいけます)。
DrawRectExtendGraph
int DrawRectExtendGraph(
int DestX1, int DestY1, int DestX2, int DestY2,
int SrcX, int SrcY, int SrcWidth, int SrcHeight,
int GraphHandle, int TransFlag
);
画像の一部分を拡大縮小表示する関数です。DrawExtendGraphとDrawRectGraphを足し合わせたような関数です。引数の最初の4つにはそれぞれ描画先のX、Y座標を、その後の引数4つには、切り取りたい画像のX、Y座標とその幅、高さを指定します。
最初の4つの引数は、(X, Y, 幅, 高さ)ではなく、左上の(X, Y)、右下の(X, Y)、であることに注意してください。
また、引数に浮動小数点を使用出来るDrawRectExtendGraphFという関数もあります。こちらの定義は以下のようになっています。
int DrawRectExtendGraphF(
float DestX1, float DestY1, float DestX2, float DestY2,
int SrcX, int SrcY, int SrcWidth, int SrcHeight,
int GraphHandle, int TransFlag
);
DrawRectRotaGraph
int DrawRectRotaGraph(
int x, int y,
int SrcX, int SrcY, int Width, int Height,
double ExtRate, double Angle,
int GraphHandle, int TransFlag, int TurnFlag
);
画像の一部分を回転表示する関数です。DrawRotaGraphとDrawRectGraphを足し合わせたような関数です。DrawRectExtendGraphと違い、描画先座標は描画先のXY座標のみを指定します。拡大率や画像反転等の処理も行うことができます。
また、DrawRectExtendGraph同様、引数に浮動小数点を使用出来るDrawRectRotaGraphFという関数もあります。こちらの定義は以下のようになっています。
int DrawRectRotaGraphF(
float x, float y,
int SrcX, int SrcY, int Width, int Height,
double ExtRate, double Angle,
int GraphHandle, int TransFlag, int TurnFlag
);
DrawRectRotaGraph2
int DrawRectRotaGraph2(
int x, int y,
int SrcX, int SrcY, int Width, int Height,
int cx, int cy,
double ExtRate, double Angle,
int GraphHandle, int TransFlag, int TurnFlag
);
画像の一部分を、中心点を指定して回転表示する関数です。DrawRotaGraph2とDrawRectGraphを足し合わせたような関数です。おおまかな機能はDrawRectRotaGraphと同じですが、cx、cyにそれぞれ回転の中心点のXY座標を指定できる点が異なります。
この関数にも引数に浮動小数点を使用出来るDrawRectRotaGraph2Fという関数があります。こちらの定義は以下のようになっています。
int DrawRectRotaGraph2F(
float x, float y,
int SrcX, int SrcY, int Width, int Height,
float cxf, float cyf,
double ExtRate, double Angle,
int GraphHandle, int TransFlag, int TurnFlag
);
描画先と、回転の中心点の座標をそれぞれ浮動小数点で指定するようです。
GetCurrentPositionSoundMem
int GetCurrentPositionSoundMem(int SoundHandle);
現在再生している音声の再生位置をサンプル単位で取得します。この関数で取得した値をSetCurrentPositionSoundMemに指定することで、音声を一時停止たり、途中から再生したりすることができます。
GetSoundCurrentTime
int GetSoundCurrentTime(int SoundHandle);
現在再生している音声の再生位置をミリ秒単位で取得します。音声データが圧縮されていた場合、正しい時間が返ってこない場合があるようです。
GetSoundTotalTime
int GetSoundTotalTime(int SoundHandle);
サウンドハンドルに割り当てられている音声データの総時間をミリ秒単位で取得します。
GetSoundTotalSample
int GetSoundTotalSample(int SoundHandle);
サウンドハンドルに割り当てられている音声データの総時間をサンプル単位で取得します。
GetActiveFlag
int GetActiveFlag();
ウィンドウがアクティブであるかどうかを返します。ウィンドウモードで実行している場合に有効で、ウィンドウがアクティブである時TRUE、そうでない時FALSEを返します。SetAlwaysRunFlagにTRUEを設定する必要があるようです。
SetDoubleStartValidFlag
int SetDoubleStartValidFlag(int Flag);
ウィンドウの多重起動を許すかどうかを設定します。この関数にFALSEを指定すると、2重にウィンドウを起動することができなくなります。この関数は、DxLib_Initよりも前に指定する必要があります。
2012/08/04 GetCurrentPositionSoundMem、GetSoundCurrentTime、GetSoundTotalTime、GetSoundTotalSampleを追加
2012/07/30 DrawRectExtendGraph、DrawRectRotaGraph、DrawRectRotaGraph2を追加
2012/07/22 初版
0 件のコメント :
コメントを投稿