嗨,我想知道是否可以简单地使用SDL2截图.
我试过SDL_GetWindowSurface,但是我收到一个错误,说:“没有硬件加速渲染器可用.我把代码从: How do I take and save a BMP screenshot in SDL 2?
我试过SDL_GetWindowSurface,但是我收到一个错误,说:“没有硬件加速渲染器可用.我把代码从: How do I take and save a BMP screenshot in SDL 2?
解决方法
看来你正在混合渲染系统.该方法只能在软件渲染的上下文中工作.对于硬件渲染,您应该使用SDL_RenderReadPixels()方法.要保存屏幕截图,您需要一个这样的代码:
SDL_Surface *sshot = SDL_CreateRGBSurface(0,w,h,32,0x00ff0000,0x0000ff00,0x000000ff,0xff000000); SDL_RenderReadPixels(renderer,NULL,SDL_PIXELFORMAT_ARGB8888,sshot->pixels,sshot->pitch); SDL_SaveBMP(sshot,"screenshot.bmp"); SDL_FreeSurface(sshot);
其中w和h是屏幕宽度和高度(您可以使用SDL_GetRendererOutputSize()获取这些值).