Что такое блит в 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(), которая копирует байты, указанные в качестве источника, по одному в байты, указанные в качестве места назначения.

Другие вопросы по тегам