Что такое блит в SDL?
В SDL вики это говорит
Используйте эту функцию, чтобы выполнить быстрый переход от поверхности источника к поверхности назначения.
Однако это не очень помогает мне.
Что означает термин "поверхностное билинг" в этом контексте?
4 ответа
В основном это означает копирование изображения с одной поверхности на другую - возможно, обрезанное и смещенное.
Блиттинг означает передачу блоков с битовой границей, как это определено в Википедии или передаче информации о блоках, хорошо известной среди разработчиков Pygame. Предположим, у вас есть поверхность (ваш экран). И вы хотели бы нарисовать круг на экране. Итак, что вы хотите сделать, это нарисовать круг и перенести блок круга буфера в экранный буфер, этот процесс называется "Blitting". Вы можете пойти дальше и прочитать больше о Blit здесь.
Официальный пример кода
Интуитивно это означает "нарисовать спрайт поверх другой поверхности".
Эта операция может быть ускорена с помощью графического процессора SDL_Texture
+ SDL_RenderCopy
,
Взгляните на http://hg.libsdl.org/SDL/file/e12c38730512/test/testsprite2.c для примера, в частности комментария:
/* Blit the sprite onto the screen */
SDL_RenderCopy(renderer, sprite, NULL, position);
который прямо говорит, что SDL_RenderCopy
это способ блистать.
В этом примере текстура создается и отправляется в память графического процессора только один раз, и с тех пор она эффективно используется повторно, см. Также: Разница между поверхностью и текстурой (SDL / общие)
Когда я запускаю этот пример на Ubuntu 15.10, nvidia-settings
говорит, что использование графического процессора достигает 100%, и я получаю гораздо более высокий FPS, чем при рисовании пиксель за пикселем на экране, так что это ускоряется GPU.
Он копирует память из одного места в памяти (источник) в другое место в памяти (место назначения).
Например. Он может копировать пиксели из одного растрового изображения в другое, из растрового изображения в текстуру или любого из вышеперечисленного на поверхность экрана или поверхность заднего буфера экрана.
Скажем, у вас есть изображение / плитка, которую вы хотите отобразить на экране. Вы должны выполнить "блиц" для копирования памяти, составляющей изображение, в память, которая используется на экране.
По сути, это вызов функции, очень похожей на memcpy(), которая копирует байты, указанные в качестве источника, по одному в байты, указанные в качестве места назначения.