Подтвердить что ты не робот

SDL: Что такое Blit?

В SDL wiki говорится:

Используйте эту функцию для быстрого перехода с исходной поверхности на целевую поверхность.

Однако это не очень помогает мне.

Что означает в этом контексте термин биение конца поверхности?

4b9b3361

Ответ 1

В основном это означает копирование изображения с одной поверхности на другую - возможно, обрезанное и сдвинутое.

Ответ 2

Blitting означает бит-пограничный блок передачи, как определено в Википедии, или Блокировка передачи информации, хорошо известная среди разработчиков Pygame. Предположим, что у вас есть поверхность (ваш экран). И вы хотите нарисовать круг на экране. Итак, что вы хотите сделать, нарисуйте круг и перенесите блок окружности буфера в буфер экрана, этот процесс называется "Blitting". Вы можете продолжить и прочитать больше о Blit здесь.

Ответ 3

Он копирует память из одного места в памяти (источник) в другое место в памяти (место назначения).

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

Скажем, у вас есть изображение/плитка, которую вы хотите отобразить на экране. Вы должны выполнить "blit", чтобы скопировать память, составляющую изображение, в память, которая используется на экране.

По сути, он вызывает функцию, очень похожую на memcpy(), которая копирует байты, указанные в качестве источника один за другим, в байты, указанные в качестве адресата.

Ответ 4

Пример кода

Интуитивно, это означает "нарисовать спрайт поверх другой поверхности".

Эту операцию можно ускорить с помощью 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 - это способ blit.

В этом примере текстура создается и отправляется в память графического процессора только один раз, и с этого момента она эффективно используется повторно, см. также: Разница между поверхностью и текстурой (SDL/общий)

Когда я запускаю этот пример в Ubuntu 15.10, nvidia-settings говорит, что использование графического процессора идет на 100%, и я получаю гораздо более высокий FPS, чем за счет рисования пикселя по экрану, поэтому он ускоряется. p >