GSD

概要

ゲーム画面上に任意の画像を表示させるライブラリです
オマケとしてフレームレートを制限する機能が付いています

Source

Download

  • Binary
    svn co http://svn.coderepos.org/share/lang/c/GSD/trunk GSD
    

Usage

  • APIの詳細は API_Specification.txt をご覧ください

初期化

const DWORD size = 128;

GSD_Initialize();
GSD_InitTexture(&size, 1);

設定

GSD_ShowFps(TRUE);
GSD_SetFpsAlign(DT_RIGHT);
GSD_SetFpsLimit(60.0);

テクスチャ作成・設定

DWORD i, j, k, r;
GSD_TextureInfo info;

GSD_DataLock();
GSD_GetTexture(0, &info);

for(i=0, k=0 ;i<info.size; i++){
    r = (i*0xFF)/info.size;
    for (j=0; j<info.size; j++, k+=4){
        info.data[k+0] = (BYTE)r;
        info.data[k+1] = (BYTE)((j*0xFF)/info.size);
        info.data[k+2] = (BYTE)~r;
        info.data[k+3] = (BYTE)~r;
    }
}

info.active = TRUE;
info.x = 16;
info.y = 16;
info.color = 0xffffffff;
info.align = DT_BOTTOM;

GSD_SetTexture(0, &info);
GSD_DataUnlock();

終了処理

GSD_Finalize();

ToDo

  • Direct3D10のゲームに対応する
  • DirectDraw、Direct3D7以前のゲームに対応する
  • 64bitのゲームに対応する
  • 似たようなコードが散在しているので一箇所にまとめたい
  • 高速化

既知の問題点

  • extAddRefextReleaseが適当なので何とかしたい
  • OpenGLでのテクスチャ消失の検知が適当なので何とかしたい
  • 一部のDirect3D8ゲーム(UT2003等)で CaptureStateBlock を呼び出すと例外が発生する
  • 一部のOpenGLゲーム(HexenII等)で頂点色が効かない
  • Steamコミュニティーを使用するゲームで終了時にリソースを開放しようとすると例外が発生する

改良歓迎

上で挙げたToDoや問題点も、自分の力だけで解決できるか怪しいです
「俺が直してやんよ」という方は、是非CodeReposのCommitterになり開発に参加してください

Author

License

LGPL準拠