Из документации SDL_RenderPresent
:
Backbuffer следует считать недействительным после каждого подарка;не предполагайте, что предыдущее содержимое будет существовать между кадрами.
Причина, вероятно, заключается в том, что каждый бэкэнд работает по-разному, и поэтому SDL не может гарантировать что-либо о том, что содержит буфер после его представления (безизлишнее снижение производительности).
Таким образом, вы должны сохранить предыдущий буфер самостоятельно.Тем не менее, вам, вероятно, не нужно каждый раз копировать буфер, просто сделайте это для кадра, для которого вы хотите сделать снимок экрана.