C++ 如何在Windows上正确处理全屏模式下的多重显示和SDL?

C++ 如何在Windows上正确处理全屏模式下的多重显示和SDL?,c++,windows,sdl,fullscreen,multiple-monitors,C++,Windows,Sdl,Fullscreen,Multiple Monitors,我正在尝试使用SDL2库构建一个Windows应用程序,它应该在多个2显示器上以全屏模式显示图形和动画。 我目前的操作系统是Windows XP,我有一个单双头图形卡、一个VGA和一个DVI接口。 我编写了几行代码来测试应用程序的行为 int main(int argc, char **argv){ SDL_Window *window1, *window2; SDL_Surface *mainsurface1, *mainsurface2; SDL_Surface

我正在尝试使用SDL2库构建一个Windows应用程序,它应该在多个2显示器上以全屏模式显示图形和动画。 我目前的操作系统是Windows XP,我有一个单双头图形卡、一个VGA和一个DVI接口。 我编写了几行代码来测试应用程序的行为

int main(int argc, char **argv){

SDL_Window      *window1, *window2;
SDL_Surface     *mainsurface1, *mainsurface2;
SDL_Surface     *image1, *image2;

// initialize SDL library
if ( SDL_Init( SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_EVENTS ) != 0 ) {
    printf( "SDL_Init Error! %s\n", SDL_GetError() );
    return 1;
}
// create a window on 1st display and another window on 2nd display 
window1 = SDL_CreateWindow( "Wnd1", SDL_WINDOWPOS_CENTERED_DISPLAY(0), SDL_WINDOWPOS_CENTERED_DISPLAY(0), 640, 480, SDL_WINDOW_FULLSCREEN ); 
window2 = SDL_CreateWindow( "Wnd2", SDL_WINDOWPOS_CENTERED_DISPLAY(1), SDL_WINDOWPOS_CENTERED_DISPLAY(1), 640, 480, SDL_WINDOW_FULLSCREEN ); 
// load test images
image1 = SDL_LoadBMP( "images\\background1.bmp" );
image2 = SDL_LoadBMP( "images\\background2.bmp" );
// get main surface of each window
mainsurface1 = SDL_GetWindowSurface( window1 );
mainsurface2 = SDL_GetWindowSurface( window2 );
// print an image on each window    
SDL_BlitSurface( image1, 0, mainsurface1, 0 );
SDL_BlitSurface( image2, 0, mainsurface2, 0 );
// update windows
SDL_UpdateWindowSurface( window1 );
SDL_UpdateWindowSurface( window2 );

// stay for a while...
Sleep( 5000 );

// ...and exit
SDL_FreeSurface( image1 );
SDL_FreeSurface( image2 );
SDL_DestroyWindow( window1 );
SDL_DestroyWindow( window2 );
SDL_Quit();

return 0;
}

这些代码在没有SDL_WINDOW_全屏标志的情况下可以完美工作,但我需要全屏模式的窗口。 如果设置了SDL_WINDOW_FULLSCREEN标志,则只有使用SDL_CreateWindow创建的最后一个窗口可见,并且在全屏模式下,另一个监视器保持不变,仍然显示桌面。 如果我设置SDL_WINDOW|u BORDERLESS|SDL_WINDOW_MAXIMIZED(无边界)|SDL_WINDOW|u似乎可以工作,但显示器保持桌面分辨率(在我的情况下)1280x1024,而不是期望的分辨率640x480或其他。 我认为问题在于SDL库如何处理DirectX设备的创建和重置

如何使用SDL或SDL2库在全屏模式下正确处理多个监视器?
有没有一种方法可以使用水平/垂直跨度功能创建单个双尺寸窗口,例如:2560*1024或1280*2048?我知道Linux上的X11可以实现这一点

任何原因都不能使用SDL渲染器和SDL_RenderSetLogicalSize?您好,谢谢回复。我必须避免使用渲染器,因为有几个关于曲面和纹理的原因。无论如何,我尝试了SDL_RenderSetLogicalSize,但它帮不了我:在全屏上仍然有一团混乱,windowed没有改变任何东西,我已经解决了这个问题。看见