c++ - SDL2 C++ 截图

标签 c++ screenshot sdl-2

您好,我想知道是否可以使用 SDL2 简单地截取屏幕截图。 我尝试了 SDL_GetWindowSurface 但我收到一条错误消息:

No hardware accelerated renderers available.

我从 here 中获取了代码.

我想到的另一个解决方案是将纹理转换为表面,但我没能做到...

有什么解决办法吗?

最佳答案

您似乎在混合渲染系统。该方法仅适用于软件渲染的上下文。对于硬件渲染,您应该使用方法 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);

wh 是屏幕宽度和高度(您可以使用 SDL_GetRendererOutputSize() 获取这些值)。

关于c++ - SDL2 C++ 截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315980/

相关文章:

c++ - 在 C++ 中修改位图时流式传输位图

c++ - 链接器错误 _SDL_main 在 _main_getcmdline 中未解决

c++ - 陷入无限循环? (可能是)

c++ - 仅用于 <char> 的模板化类型的附加构造函数

c++ - 为 sRGB 到 CIELAB 色彩空间转换生成 3DLUT(.3dl 文件)

android - 在应用程序内截取屏幕截图

android - 使用 adb 和 perl 捕获 android 设备屏幕截图

c++ - 内联公共(public)接口(interface)的方法

android - 如何以编程方式截取 webview 的屏幕截图,捕获整个页面?

c++ - SDL2不使用纹理绘制图像