SDL2 - объединить передний и задний буфер?

Я визуализирую изображения с мерцающими объектами (обычно 30 Гц), используя двойную буферизацию. Для скриншотов я хотел бы смешать текущий и предыдущий буфер без необходимости постоянного сохранения предыдущего буфера.

Как мне получить доступ к текущему переднему и заднему буферу SDL2 и смешать их в один буфер?


person thrust26    schedule 05.12.2018    source источник
comment
Используете ли вы SDL_Renderer для рисования или что-то еще, например, OpenGL/DirectX/Vulkan/SDL_Surface blitting?   -  person genpfault    schedule 05.12.2018
comment
Я использую SDL_Renderer   -  person thrust26    schedule 07.12.2018


Ответы (1)


Из документации SDL_RenderPresent:

Резервный буфер следует считать недействительным после каждого присутствия; не предполагайте, что между кадрами будет существовать предыдущее содержимое.

Причина, вероятно, в том, что каждый бэкенд работает по-своему, и поэтому SDL не может ничего гарантировать в отношении содержимого буфера после его представления (без ненужного снижения производительности).

Таким образом, вы должны сохранить предыдущий буфер самостоятельно. Тем не менее, вам, вероятно, не нужно копировать буфер каждый раз, просто сделайте это для кадра, скриншот которого вы хотите сделать.

person Nelfeal    schedule 07.12.2018