SweetBlack さんどうも、DXライブラリの管理人です。
> 1)画像データを多くロードしすぎた事が原因で、
> GetDrawScreenGraphが正常に行われないという事がありうるのか?
> (私の推論は正しいのか?)
100%とはいえませんが、ありうると思います。
グラフィックチップ側の画像データを格納する為のメモリ(VRAM)が足りなく
なった場合、溢れたデータをシステムメモリ側に退避して、VRAM を「今使っている画像」のみ
を格納するというような使い回しをする機能が DirectX にはあるのですが、VRAM に入らない
画像データが多くなると正常に動作しなかったりすることがある(不安定になる)という話を
何回か耳にしたことがあります。 (システムメモリも足りなくなるとOSが自動的に
ディスクを仮想的にメモリに見立てて「メモリが足りない」という状況を回避しますが、
システムメモリが足りている場合に比べて動作が不安定になることと似ています)
なので、VRAMが少ないグラフィックチップを搭載したPCでは、より不具合が
発生し易いと思います。
> 2)画像データをどこまで扱う事ができるか、を知る方法はあるのか?
1のご返答で申し上げたような機能が DirectX には在るので、DirectX 的にどこまで
画像データを扱うことが出来るか、という限界点は曖昧だと思いますが、DXライブラリ
はグラフィックハンドルは 32768 個以上作れないという制限がありますので、DXライブラリ
を使用している以上は扱える画像データの数の限界は 32768 個ということになります。
DirectX 側は、とりあえず画像データの総量が VRAM のサイズを超えないようにするのが
動作を安定させる一番の方法だと思います。
例えば、VRAM が 32MB のグラフィックチップの場合ですと
640x480 の画像なら16bitカラー画面の場合は1ドットが2バイトなので
640x480x2 = 614400バイト
614400 / 1024 = 600キロバイト
一枚600キロバイトということになりVRAMが32MB搭載されている
グラフィックデバイスの場合は
32メガバイト * 1024 = 32768キロバイト
32768キロバイト / 600キロバイト = 54.61333... 枚
およそ54枚格納できるということになります。
ただ、実際にはフレームバッファ(表画面、裏画面)の分に
フルスクリーンの場合は画面モードのサイズ×2個分、
ウインドウモードの場合はデスクトップのサイズ+画面モードのサイズ分
の VRAM 領域の確保がありますので、フルスクリーンの場合で凡そ 52枚、
ウインドウモードの場合は50枚程格納できると言うことになります。
今のはVRAMが32MB搭載されている場合で計算しましたが、
DXライブラリが正常に動作しないというPCに搭載されている
グラフィックチップは古いチップである可能性が高いので、その場合は
VRAMの容量は 4MB や 8MB、多くて 16MB となり、格納できる枚数は
凡そ 6, 12, 24枚となります。
また、32bitカラー画面で起動した場合は(ウインドウモードの場合は
デスクトップが 32bitカラーになっていると強制的に 32bitカラー画面での
起動となります)この半分になりますので、32MB 搭載してある場合で 26枚、
4MB, 8MB, 16MB の場合はそれぞれ 3, 6, 12 枚となります。
ゲーム中で使用する画像をすべて最初に読み込む作りにすると簡単に
VRAM 容量を超えてしまいますので、VRAM 容量を超えないようにするには
なるべくそのシーンで使用する画像だけを読み込んで、シーンが終わったら
その都度 DeleteGraph で画像を削除する、という作りにする必要があります。