Re: デュアルディスプレイ対応方法 ( No.1 ) |
- 名前:管理人 日時:2009/10/31 22:52
最新バージョンで DirectX9版でも GetDirectDrawDeviceGUID 等の関数を使用できるようにしましたので
よろしければお試し下さい m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
尚、出力デバイスの指定に SetDDrawUseGuid の代わりに SetUseDirectDrawDeviceIndex を使用してください
// 使用する DirectDraw デバイスのインデックスを設定する
int SetUseDirectDrawDeviceIndex( int Index ) ;
因みに、ウインドウモードでは指定したデバイスと接続されているモニタ上でのみ正常に描画され、
指定したデバイスに接続されていないモニタ上では何らかのペナルティが発生すると思います
これはドライバかOSの仕様だと思いますので、ライブラリの側ではどうしようもありません
フルスクリーンモード時にデスクトップ画面がずれる現象はデスクトップ画面のサイズが変更されるため
( 片方の画面の解像度が変更されたため )だと思います
サブモニタ表示部分が操作できなくなる現象の「マウスポインタが移動できない」は
マウスポインタがサブモニタに表示されているけど動かすことができないということでしょうか?
|
一応解決 ( No.2 ) |
- 名前:ねずみ 日時:2009/11/01 01:58
ありがとうございます。
VC++用で確認をしたところ、当方のデュアルモニタ環境で想定通りに動作しました。
1つ気になったことがあります。
GetDirectDrawDeviceNumしたところ、2.25cでは3つだったのですが、今回のバージョンでは2つと返ってきました。
このとき、0番がメインモニタ、1番がサブモニタになっています。未接続のものは取得できませんでした。
もちろんライブラリ以外の環境は変わっていません。
ウィンドウモードで、SetUseDirectDrawDeviceIndexに渡す値が
0のとき:従来通り(メインモニタでは正常描画、サブモニタでは描画が遅くなる)
1のとき:サブモニタでは正常描画、メインモニタでは描画が遅くなる
と、2.25cと比べて挙動が変わりました。
なおこの挙動は想定通りです。
フルスクリーンの時は、渡すべきデバイス番号が変わったくらいで
2.25cのときと挙動の違いは見られませんでした。
>フルスクリーンモード時にデスクトップ画面がずれる現象
はい、おそらくそうだと思います。
>サブモニタ表示部分が操作できなくなる現象
サブモニタの領域にマウスポインタを置いておいても、ゲーム起動時に消えます。
また、マウスを動かしてサブモニタに出現させることは出来ませんでした。
操作は出来ないものの、サブモニタに置いておいたチャットソフトは普通に動作しており、
会話ログを垂れ流していました。
|
Re: デュアルディスプレイ対応方法 ( No.3 ) |
- 名前:管理人 日時:2009/11/05 12:40
概ね想定通りに動作したみたいで何よりです
> GetDirectDrawDeviceNumしたところ、2.25cでは3つだったのですが、今回のバージョンでは2つと返ってきました。
DirectX7版と DirectX9版でデバイス列挙に使用しているAPIが違うので動作に違いが出ているのだと思います。
多分 DirectX9版のデバイス列挙APIは無効はデバイスは列挙しないのではないかと・・・
> サブモニタの領域にマウスポインタを置いておいても、ゲーム起動時に消えます。
> また、マウスを動かしてサブモニタに出現させることは出来ませんでした。
二つのモニタの位置関係が変化しているということはないでしょうか?
私が以前経験した例では、普段モニタ1が左、モニタ2が右に配置されていたのものが、
フルスクリーンモードになるとモニタ1が下、モニタ2が上に勝手に配置が変えられていました
|
Re: デュアルディスプレイ対応方法 ( No.4 ) |
- 名前:ねずみ 日時:2009/11/05 21:36
ごめんなさい、1箇所訂正させてください。
Test版をフルスクリーンで実行したときの挙動は、2.25cとは異なっていました。
メインモニタに表示させた場合、サブモニタに表示させた場合を問わず、
表示しなかった方のモニタにマウスポインタを移動させることが出来ました。
当然、非表示側をクリックした場合、ゲーム画面は非アクティブ&最小化されます。
(機会があればコールバック周りを調べてみようと思います)
>二つのモニタの位置関係が変化しているということはないでしょうか?
メインモニタにフルスクリーン表示した場合、
解像度によってはサブモニタの内容がズレて表示されてしまいますが、
サブモニタをメインモニタの上や左に置くことでズレを回避することが出来ると思います。
この仕組みを意図的に組み込んだゲームはあるかもしれませんね。
|
Re: デュアルディスプレイ対応方法 ( No.5 ) |
- 名前:管理人 日時:2009/11/06 08:34
ご情報ありがとうございます
|