last UpdataDate
see over ie5
KEY Depth Production
- PS2 Linux Developer[tips:lkdScreencap] -
[TOP Page]
[BBS]
[PS2 Linux Developer]
■site
■news
.
[lkdScreencap][インターフェイスの利用][リファレンス]
■lkdScreencap
ここではlkdScreencapの機能,使い方を説明します.
lkdScreencapはGS上の画像をスクリーンキャプチャするための関数群です.
また,ver 0.0.4以降からGSに対してテクスチャを転送することが出来るようになりました.
主な機能としては以下の能力をもちます.
機能 |
GSからメモリ転送を行う.(ver 0.0.1) |
GSにメモリ転送を行う.(ver 0.0.4) |
VRAM,Zバッファ(一部)に対応.(ver 0.0.1) |
32,24,16ビットに対応(ver 0.0.1) |
TGAファイル出力.(ver 0.0.1) |
PPMファイル出力.(ver 0.0.2) |
BMPファイル出力.(ver 0.0.3) |
BMPファイル入力.(ver 0.0.4) |
画像入力にアンチエリアッシング拡大縮小.(ver 0.0.4) |
C/C++から使用可能(ver 0.0.1) |
一部ではありますが内部仕様を示します.
ここで問題となってくるのが,内部使用のtemplateクラスの利用です.これ自体は非常に便利で簡単に任意バイト数のグラフィック画像を取り込むことが出来ます.しかしCからの利用が出来なくなってしまうために,このままでは問題になって今します.そこでインターフェイスとして提供することによってこれらを解決します.
"IlkdScreencap" と言うインターフェイスを返してこれらの関数を呼び出します.
■lkdScreencap インターフェイスの利用
まずはインターフェイスの宣言をします.
PLKDSCREENCAP screen;
次に IlkdScreencap インターフェイスを,関数"lkdScreencapCreate"を利用して作成します.
screen = lkdScreencapCreate();
次にインターフェイスを利用して,出力ファイル名を決定します.
IlkdScreencap_SetName( screen, "screen.tga" );
ここまで設定したら,アプリケーションを動作させてGSのセッティング,レンダリング等をさせます.
スクリーンキャプチャをしたい時になったら,インターフェイスを利用してテクスチャの左上のアドレスを決定するために,SetTextop64F0関数を呼びます.この関数は自動的に割り当てられた引数からバッファ,あるいはテクスチャのアドレスを取得します.続いてWriteImageTGA関数を呼び出し,ファイルに出力します.アドレスの設定は一度行ってしまえば継続してそのアドレスを利用できるので2回目からはWriteImageTGAだけで済みます.
IlkdScreencap_SetTextop64F0( screen, g_out_mode, g_psm, g_resolution );
IlkdScreencap_WriteImageTGA( screen );
また ver 0.0.4 以降では以下のようなインターフェイスが追加されました.
IlkdScreencap_SetName( screen, "screen.bmp" );
IlkdScreencap_ReadImageBMP( screen );
この命令によって SetName で設定された名前のファイルを開いて SetTextop64X で設定された位置へテクスチャをロードします.また,テクスチャサイズが設定された幅と,高さにあっていなかった場合は,アンチエリアッシング付拡大縮小を行います.
最後に使い終わった IlkdScreencap インターフェイスを,関数"lkdScreencapRelease"を利用して開放します.
lkdScreencapRelease( screen );
■lkdScreencap インターフェイス応用
このインターフェイスはバッファ以外にテクスチャに適応することも出来ます.テクスチャアドレスを関数"SetTextop64"で指定して,その他のパラメータをそれぞれしていし,最後に関数"WriteImageTGA"を呼び出して,画像を書き出します.一連の設定値は開放されるまで保持されています.
■lkdScreencap リファレンス
関数 | PLKDSCREENCAP lkdScreencapCreate(); |
引数 | |
返値 | 成功すればlkdScreencapのインターフェイスが返る. |
機能 | lkdScreencapインターフェイスを作成する. |
備考 | - |
関数 | void lkdScreencapRelease( PLKDSCREENCAP lpV ); |
引数 | lpV | lkdScreencapCreate出作成したインターフェイス.
|
|
返値 | なし |
機能 | lkdScreencapインターフェイスを開放する. |
備考 | - |
関数 | HKDRESULT SetTextop64( long _textop64 ); |
引数 | _textop64 | [in] テクスチャのトップアドレス(64バイト区切り).
|
|
返値 | 成功すればLKD_OKが返る.(LKD_OKしか返ってこない.) |
機能 | テクスチャのトップアドレスの設定.64バイト区切りの任意の位置.GS上のアドレス. |
備考 | インターフェイス,IlkdScreencap_SetTextop64 |
関数 | HKDRESULT SetTextop64F0( long _out_mode, long _psm, long _resolution ); |
引数 | _out_mode | [in] 画面モード PS2_GS_NTSC, PS2_GS_PAL, PS2_GS_DTVのいずれか
| _psm | [in] ピクセルフォーマット PS2_GS_PSMCT32, PS2_GS_PSMCT24, PS2_GS_PSMCT16, PS2_GS_PSMCT16S, PS2_GS_PSMZ32, PS2_GS_PSMZ24, PS2_GS_PSMZ16, PS2_GS_PSMZ16Sのいずれか
| _resolution | [in] 解像度 PS2_GS_640x480, PS2_GS_800x600, PS2_GS_1024x768, PS2_GS_1280x1024のいずれか
|
|
返値 | 成功すればLKD_OKが返る.(LKD_OKしか返ってこない.) |
機能 | ダブルバッファ時のフレーム0のアドレスを設定する.画面モード,ピクセルフォーマット,解像度によってアドレスを算出する. |
備考 | インターフェイス,IlkdScreencap_SetTextop64F0 |
関数 | HKDRESULT SetTextop64F1( long _out_mode, long _psm, long _resolution ); |
引数 | _out_mode | [in] 画面モード PS2_GS_NTSC, PS2_GS_PAL, PS2_GS_DTVのいずれか
| _psm | [in] ピクセルフォーマット PS2_GS_PSMCT32, PS2_GS_PSMCT24, PS2_GS_PSMCT16, PS2_GS_PSMCT16S, PS2_GS_PSMZ32, PS2_GS_PSMZ24, PS2_GS_PSMZ16, PS2_GS_PSMZ16Sのいずれか
| _resolution | [in] 解像度 PS2_GS_640x480, PS2_GS_800x600, PS2_GS_1024x768, PS2_GS_1280x1024のいずれか
|
|
返値 | 成功すればLKD_OKが返る.(LKD_OKしか返ってこない.) |
機能 | ダブルバッファ時のフレーム1のアドレスを設定する.画面モード,ピクセルフォーマット,解像度によってアドレスを算出する. |
備考 | インターフェイス,IlkdScreencap_SetTextop64F1 |
関数 | HKDRESULT SetTextop64Z( long _out_mode, long _psm, long _resolution ); |
引数 | _out_mode | [in] 画面モード PS2_GS_NTSC, PS2_GS_PAL, PS2_GS_DTVのいずれか
| _psm | [in] ピクセルフォーマット PS2_GS_PSMCT32, PS2_GS_PSMCT24, PS2_GS_PSMCT16, PS2_GS_PSMCT16S, PS2_GS_PSMZ32, PS2_GS_PSMZ24, PS2_GS_PSMZ16, PS2_GS_PSMZ16Sのいずれか
| _resolution | [in] 解像度 PS2_GS_640x480, PS2_GS_800x600, PS2_GS_1024x768, PS2_GS_1280x1024のいずれか
|
|
返値 | 成功すればLKD_OKが返る.(LKD_OKしか返ってこない.) |
機能 | ダブルバッファ時のZバッファのアドレスを設定する.画面モード,ピクセルフォーマット,解像度によってアドレスを算出する. |
備考 | インターフェイス,IlkdScreencap_SetTextop64Z |
関数 | HKDRESULT SetWidth( long _iWidth ); |
引数 | |
返値 | 成功すればLKD_OKが返る.(LKD_OKしか返ってこない.) |
機能 | 取得するバッファの横幅を設定する. |
備考 | インターフェイス,IlkdScreencap_SetWidth |
関数 | HKDRESULT SetHeight( long _iHeight ); |
引数 | |
返値 | 成功すればLKD_OKが返る.(LKD_OKしか返ってこない.) |
機能 | 取得するバッファの縦幅を設定する. |
備考 | インターフェイス,IlkdScreencap_SetHeight |
関数 | HKDRESULT SetResolution( long _resolution ); |
引数 | _resolution | [in] 解像度 PS2_GS_640x480, PS2_GS_800x600, PS2_GS_1024x768, PS2_GS_1280x1024のいずれか
|
|
返値 | 成功すればLKD_OKが返る. |
機能 | 取得するバッファの解像度を設定する. |
備考 | インターフェイス,IlkdScreencap_SetResolution |
関数 | HKDRESULT SetPsm( long _psm ); |
引数 | _psm | [in] ピクセルフォーマット PS2_GS_PSMCT32, PS2_GS_PSMCT24, PS2_GS_PSMCT16, PS2_GS_PSMCT16S, PS2_GS_PSMZ32, PS2_GS_PSMZ24, PS2_GS_PSMZ16, PS2_GS_PSMZ16Sのいずれか
|
|
返値 | 成功すればLKD_OKが返る.(LKD_OKしか返ってこない.) |
機能 | 取得するバッファの描画ピクセルフォーマットを設定する. |
備考 | インターフェイス,IlkdScreencap_SetPsm |
関数 | long GetTextop64( long *_textop64 )const; |
引数 | _textop64 | [out] ピクセルフォーマットを格納するポインタ.
|
|
返値 | 成功すればテクスチャのトップアドレス (64バイト区切り)が返る. |
機能 | 取得するバッファのアドレスを取得する. |
備考 | インターフェイス,IlkdScreencap_GetTextop64 |
関数 | long GetWidth( long *_iWidth )const; |
引数 | _iWidth | [out] 横幅を格納するポインタ.
|
|
返値 | 成功すれば設定されている取得するバッファの横幅が返る. |
機能 | 取得するバッファの横幅を取得する. |
備考 | インターフェイス,IlkdScreencap_GetWidth |
関数 | long GetHeight( long *_iHeight )const; |
引数 | _iHeight | [out] 縦幅を格納するポインタ.
|
|
返値 | 成功すれば設定されている取得するバッファの縦幅が返る. |
機能 | 取得するバッファの縦幅を取得する. |
備考 | インターフェイス,IlkdScreencap_GetHeight |
関数 | long GetName( char * _fname, long _size )const; |
引数 | _fname | [out] 出力ファイル名を格納するポインタ.
| _size | [out] 出力ファイル名を格納するポインタのサイズ.
|
|
返値 | 成功すれば設定されている出力ファイル名が返る. |
機能 | 出力ファイル名を取得する. |
備考 | インターフェイス,IlkdScreencap_GetName |
関数 | long GetResolution( long *_resolution )const; |
引数 | _resolution | [out] 解像度を格納するポインタ.
|
|
返値 | 成功すれば設定されている解像度が返る.失敗すると0が返る. |
機能 | 取得するバッファの解像度を取得する. |
備考 | インターフェイス,IlkdScreencap_GetResolution |
関数 | long GetPsm( long *_psm )const; |
引数 | _psm | [out] ピクセルフォーマットを格納するポインタ.
|
|
返値 | 成功すれば設定されているピクセルフォーマットが返る. |
機能 | 取得するバッファのピクセルフォーマットを取得する. |
備考 | インターフェイス,IlkdScreencap_GetPsm |
関数 | HKDRESULT WriteImageTGA(void); |
引数 | |
返値 | 成功すればLKD_OKが返る. |
機能 | TGAフォーマット画像ファイル書き出す. |
備考 | インターフェイス,IlkdScreencap_WriteImageTGA |
関数 | HKDRESULT WriteImagePPM(long _binary); |
引数 | _binary | [in] WRITE_PPM_BINARY か WRITE_PPM_ASCII
|
|
返値 | 成功すればLKD_OKが返る. |
機能 | PPMフォーマット画像ファイル書き出す.引数 _binary の指定によってバイナリ形式のPPMファイルかアスキー形式のPPMファイルの切り替えが出来る. |
備考 | インターフェイス,IlkdScreencap_WriteImagePPM |
関数 | HKDRESULT WriteImageBMP(void); |
引数 | |
返値 | 成功すればLKD_OKが返る. |
機能 | BMPフォーマット画像ファイル書き出す. |
備考 | インターフェイス,IlkdScreencap_WriteImageBMP |
関数 | HKDRESULT ReadImageBMP(void); |
引数 | |
返値 | 成功すればLKD_OKが返る. |
機能 | BMPフォーマット画像ファイル開きGSメモリに書き出す. |
備考 | インターフェイス,IlkdScreencap_ReadImageBMP |
過去の話題:
■links
[TOP Page]