私はSDL_SetWindowPosition
を使用して私のウィンドウを配置しています。この機能を使用して、別のモニタにウィンドウを配置することはできますか?SDL2ウィンドウを2番目のモニタに配置する方法は?
UPDATE
任意のアイデアはどのようにこの問題を解決するには、テキストのサイズがWindows 10で変更されたときに、正しいモニタ位置を返しませんSDL_GetDisplayBounds
を使用していますか?
私はSDL_SetWindowPosition
を使用して私のウィンドウを配置しています。この機能を使用して、別のモニタにウィンドウを配置することはできますか?SDL2ウィンドウを2番目のモニタに配置する方法は?
UPDATE
任意のアイデアはどのようにこの問題を解決するには、テキストのサイズがWindows 10で変更されたときに、正しいモニタ位置を返しませんSDL_GetDisplayBounds
を使用していますか?
あなたがセカンドモニタの境界を知っている場合は、[はい、あなたは、SetWindowPositionを使用することができます。 関数SDL_GetDisplayBounds(int displayIndex、SDL_Rect * rect)を使用して取得できます。
SDL2は、グローバルな画面空間座標系を使用します。各表示装置は、この座標空間内に独自の境界を有する。次の例は、第2の表示装置上にウィンドウを配置します
我々はそのように、我々はまた、マクロSDL_WINDOWPOS_CENTERED_DISPLAY(n)
どこ
n
を使用することができます
#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0)
として定義されている参照SDL_video.h
でSDL_WINDOWPOS_CENTERED
の定義を見てみると
// enumerate displays
int displays = SDL_GetNumVideoDisplays();
assert(displays > 1); // assume we have secondary monitor
// get display bounds for all displays
vector<SDL_Rect> displayBounds;
for(int i = 0; i < displays; i++) {
displayBounds.push_back(SDL_Rect());
SDL_GetDisplayBounds(i, &displayBounds.back());
}
// window of dimensions 500 * 500 offset 100 pixels on secondary monitor
int x = displayBounds[ 1 ].x + 100;
int y = displayBounds[ 1 ].y + 100;
int w = 500;
int h = 500;
// so now x and y are on secondary display
SDL_Window * window = SDL_CreateWindow("title", x, y, w, h, FLAGS...);
表示インデックスです。 Windowsの10のための
アップデート - DPIスケーリング問題が
確かにSDL2とWindowsでのDPIスケール(すなわち、テキストスケール)を変更するとバグがあるように思えます。
問題に関連する2つのバグレポートがあります。彼らはまだ明らかに未解決のままです。
https://bugzilla.libsdl.org/show_bug.cgi?id=3433
https://bugzilla.libsdl.org/show_bug.cgi?id=2713
潜在的な解決策
私はOPがscale != 100%
ために、DPIスケールを決定するためのWin32 APIを使用し、そのことにより、境界を修正することができると確信しています。
あなたの質問に答えるためにオリジナルの質問にコメントしたいと思いますが、私はまだ特権を持っていません。私の推測では**テキストスケール**を変更しています。Windows 10では何らかの形でSDLの画面座標に影響します。 MacのRetinaディスプレイでSDL2を使用する方法を理解するまで、私は別の問題を抱えていました。 (Retinaはスケーリングを使用します)。 以下の実験を試してみることをお勧めします:Windows 10では、表示範囲を出力し、テキストの縮尺を変更したときに変更されているかどうかを確認します。 –
SDL2のバグである可能性があります。 Windows 10で同じ経験を持つ他の人を探しましたか? –
私の前提が正しい場合、125%のテキストスケールの結果として、すべてのスクリーン位置に1.25が乗算されます。 –