SDL2 C截图

前端之家收集整理的这篇文章主要介绍了SDL2 C截图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我想知道是否可以简单地使用SDL2截图.
我试过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()获取这些值).

猜你在找的C&C++相关文章