DirectXを使用したゲームでの画面取得

このQ&Aのポイント
  • 特定のオンラインFPSゲームで、画面が特定の状況になった一瞬のスクリーンショットを自動的に保存するプログラムの作成方法
  • BitBltで画面を取得して状況の判別と画像の保存を行うプログラムの実装
  • ゲームBの画面取得が上手くいかない問題の解決策としてのDxtoryやDirectX関連の知識の活用方法
回答を見る
  • ベストアンサー

DirectXを使用したゲームでの画面取得

特定のオンラインFPSゲームで、画面が特定の状況になった一瞬のスクリーンショットを自動的に保存するプログラムを作成しています。 現在なんとかBitBltを使って画面を取得して状況の判別と画像の保存を行うプログラムができ、このプログラムであるゲームAでは正常に動作していることが確認できました。 しかし、別のゲームBでは上手く動作せず、確認したところBitBltでの取得が上手くいっていないようでBitBltで取得している画面全体が黒一色(RGB値ですべて0)と成っていることが分かりました。 おそらくゲームBに採用されているゲームガードなどとの競合だと思うのですが、検索エンジンで調べてみたところDxtoryなどのソフトではゲームBのプレイの動画が取れるようなので原理的にはプレイ中の画像を取得することもできるはずです。 DxtoryはDirectXを使用しているゲームに使用が限定されているようなので、おそらくDirextX関連(DirectDrawとかでしょうか?)で画面を読み取る方法があるのだとおもうのですが、具体的には一体どのような関数?を使って画面の取得を行えばいいのでしょうか? 参考になるサイトや使用する関数などをご存知の方、DirectX関連の知識をお持ちのかたはぜひご教授いただけたらと思います。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sygh
  • ベストアンサー率76% (42/55)
回答No.1

dxdiagを使ってOS全体のDirectDrawを無効化するか、ハードウェア オーバーレイ サーフェイスの事前確保を試してみては? あと、使用OSやターゲットのゲームが使用しているDirectX(Direct3D)のバージョンを明記したほうがいいです。Windows Vista以降では、グラフィックもサウンドもXP以前とはかなり大幅にアーキテクチャが変わっているので、昔OKだった方法が通用しないこともありえます。 http://hp.vector.co.jp/authors/VA033596/ojos/001overlay.html

umaninnjin
質問者

お礼

回答ありがとうございます OSはwindows 7,ゲームBは「AVA」で使用しているのはDirectX9.0cです windows7ではdxdiagからの無効化ができないとのことでしたので、 OCL (http://mosax.sakura.ne.jp/fswiki.cgi?page=Other#p0) というソフトを使用してオーバーレイサーフェスの事前確保を試してみましたが、やはりスクリーンショットは黒一色になってしまいました。

umaninnjin
質問者

補足

いろいろ調べたところ配色の設定で、「Windows Aero」を無効にし「Windows Vista ベーシック」にしたところOLCを使用しなくてもスクリーンショットが取れるようになりました。 アドバイス非常に参考になりました。ありがとうございました。

関連するQ&A

  • DirectX11が出たので少々質問させていただきます

    DirectX11が出たので少々質問させていただきます DirectX11使用環境下にてDirectX9.0cまでしか対応されていないゲーム等をした場合、 DirextX11の効果で画像表示は綺麗になるのでしょうか? それともDirextX11をサポートしていないゲームではないと 画像表示は綺麗にならないのでしょうか? よろしくおねがいします

  • DirectXについて

     僕はある、オンラインゲームをインストールして、起動しようとすると、「コンピューターd3dx10_43.dllがないためプログラムを開始できません。」的な文章が出て来ました。 あっ、これはDIrectXの事だと思い、自分のコンピューターのDIrectXのバージョンを確認した所、DirectX11になっていました。 オンラインゲームの動作環境はでは「Direct9.0c以上」って書いてあって、ちゃんと満たしているのにプレイ出来ないのは何故でしょうか? ちなみにオンラインゲームは「World of Tanks」という有名で大きなゲームです。  分かる人は直し方というか手順までしっかり教えて欲しいです。

  • DirectX&Win32API&C++ ドライブ情報の取得方法について

    Windowsプログラム(Win32API)と、DirectX9(2007January)と、C++を使用してゲームを制作しています。 ですがDirectXは環境によっては動作しないものも多く、 どんな環境では動かないかというのもを手軽に調べるために ゲーム起動前にドライブ情報を表示するようにしたいのです。 (例えば、グラフィックボードだとか、VRAMや、HDD容量や  メインメモリの容量など、DirectX診断ツールのようなもの) それを調べる関数が有りそうな気もしたのですが、 C#やJavaだといくつかありましたが意外と見つからず、 (調べ方が悪いだけかもしれませんが)難儀しています。 もしドライブ情報の取得方法をご存知の方がいらっしゃいましたら どうかアドバイスをお願い致します。

  • DirectXについて

    自分のPCのOSはWindows VistaでDirectX10を使用しているのですが、Grand theft auto san and reas(以下GTASA)と言うPCゲームをしたいのですが、 動作環境のDirectXの欄に9と書いていたので10から9へ下げたいです。 そのようなことが出来るのでしょうか? また、DirectX10の状態でもGTASAはプレイすることができますか? どうかよろしくお願いします。

  • archeage、directx

    パソコンについてあまり詳しくないので、質問におかしな所があったらすみません。 PCゲーム「archeage」をDirectx11でプレイするにはどうすればいいでしょうか。 現在windows7でarcheageをプレイし始めたのですが、ゲーム内設定画面は「Directx9」のほうにチェックが入っていて「Directx11」にはチェックが入れられない状態です。 Directx診断ツールでバージョンを調べましたが11となっており、再インストールもしてみましたが「最新、または最新と同等のバージョンが入っており---。」と表示され改善はされませんでした。 もし必要であれば動作環境などもわかる限りで補足として記しますのでおっしゃってください。

  • JavaでのDirectXの使用

    表題の通りなのですが、javaでDirectXの使用はできるのでしょうか? ネットで探してみたのですがあまり詳しく書かれた記事を見つけれませんでした。 現在、Windowsで開発した3Dゲームをandroidアプリに移植しようと思っているところです。 DirecxtXが無理な場合、OpenGLになるのでしょうか? またDirextXからOpenGlLへのソースコンバーター等はあるのでしょうか? いろいろと質問させていただきましたが、ご存知の方がいらっしゃいましたら ご教授をお願いします。

    • ベストアンサー
    • Java
  • DirectXについて

    僕は某オンラインゲームをインストールしました。 そして、動作環境を見てみるとどうやらDirectX9.0cが必要なようでこれと、DirectX エンド ユーザー ランタイム Web インストーラを外付けHDDにインストールしました。 そして、ゲームを起動しようとすると、なんか「コンピューターに d3dx10_43.dll がないため、プログラムを開始できません。」というエラーが出て来ます。   どうやらd3dx10_43.dllはDirectXの事らしいのですが、なぜちゃんとDirectX9.0cを入れてるのにこのようなエラーが出るのでしょうか?  DirectX9.0cやユーザーランタイムを外付けHDDにインストールしたからでしょうか?  あっ、そういえば元々PCにはDirectX11が入ってるのですが、それが原因ですかね? まあとにかくDirectX9.0cをしっかり入れてるのになぜコンピューターにないというエラーが出るのかを知りたいです。  *知ってる方は教えて欲しいですが、11から9.0cにダウングレード出来ますか? もし、出来ないならどうすればオンラインゲームはプレイ出来ますか? ちなみにオンラインゲームはあの有名なWOTというゲームです。 よろしくお願い致します。

  • ゲーム用マシンには、XP(DirectX 9.0)か、Vista(DirectX 10)か?

    現在、CPU1.5GHzの、XP・SP2のマシンを使用していますが、性能面での弱さが見えて来たのと、HDDが寿命の兆しが見えて来た為、新しいマシンの購入を検討しています。 主な用途はPCゲーム全般なのですが、OSをXPにするか、Vista Home Premiumにするかで、判断が分かれる所です。 当「教えてgoo」を含む各サイトで調べた他、PCに詳しい友人数人や、あちこちの店頭で、色々聞いて来ましたが、家電量販店の方には、「現行の日本のメーカー製の新品のPC=Vista Home Premiumで、全てのPCゲームが問題無くプレイ出来る」と薦める方もいたのですが、それ以外では、ゲーマーの友人や、中古PCの販売・PC修理等を行なっているパソコンショップ(ここもゲーマーのお客さんが多い)の店員さんの話では、「ゲーム用途ならXPが良い」との意見が多く聞かれました。 これまでに聞いたお話を纏めると、 ・XPでは、DirectX 9.0を使用。 ・Vistaでは、DirectX 10と、DirectX 9.0を使用(ただし、XPでのDirectX 9.0のようにはスムーズに行かない事(不具合)があるとの話もあり) 現在のPCゲームは多くがDirectX 9.0向けに作られていて、DirectX 10向けに作られている物は少ない。 ・(現状ではDirectX 9.0と、DirectX 10に、互換性が無い?) というような事情による物のようです。 そこで一つ気になったのですが、Vistaでしかプレイ出来ない、つまり、DirectX 10でしかプレイ出来ないゲームタイトルはあるのでしょうか?(一つのゲームタイトルで、DirectX 9.0版と、DirectX 10版、両方が発売されている物は除いて、DirectX 10版しか発売されていない物です) また、ゲーム用途なら、OSはXPが良いか、Vistaが良いかで、他にも参考になる情報がありましたら、お教え頂ければ助かります。 (・XPの正規OEMライセンス提供が2008年6月30日までである事。 ・XPとVistaのサポート期間。 ・次期OSとして開発中のWindows 7。 等の情報はある程度は把握しています)

  • DirectX 9.0c について

    DirectX診断ツールでのDirectXバージョンは確かに9.0cになっているのに、必須動作環境がDirectX 9.0c以上のゲーム等をプレイしようとすると、起動に失敗します。 他の必須動作環境は全て満たしていて、9.0c以上のゲームになると必ず失敗します。 以前、誤ってDirectX8.1をインストールしてしまい、その時から今の状態が続いています。 その後再び9.0cをインストールしたのですが、なぜか問題が解消されません。 解決方法、またはアドバイスをよろしくお願いします。

  • DirectX系のゲームを起動するとフリーズします。

    DirectX系のゲームを起動するとフリーズします。 最近RailSim2をプレイしていたのですが、突然画面がブレたように筋が入ってなってフリーズしました。 一時的なものだと思って再起動させてみたのですが、もう一度ゲームを起動させてみると起動画面でフリーズしてしまいました。 その後、その他のDirectXを使用するゲームを起動させてもフリーズすることに気が付きました。 熱暴走か、グラフィックの不具合か、DirectXの不具合かと思ったので、内部の掃除をし、グラフィックのドライバを最新のものに更新し、DirectXを再インストールしたのですが、全く変わらなったです。 何か解決策や対処法があればご教授ください。お願いします。 NEC PC-VR300DD CPU:Intel(R) Celeron(R) CPU 2.93GHz グラフィック:Intel(R) 82915G/GV/910GL Express Chipset Family メモリ:1024MB+256MB OS:Microsoft Windows XP Home Edition Service Pack 3 (Build 2600) DirectX9.0c

専門家に質問してみよう