2010-09-13 1 views
16

В вики СВД он говоритSDL: Что такое Blit?

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

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

В чем смысл этого термина?

+6

http://en.wikipedia.org/wiki/Bit_blit –

ответ

17

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

+1

... и масштабируется при необходимости –

+0

StretchBlt() делает это масштабирование для вас. – null

11

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

0

код образца

Наглядно, это означает, что «нарисовать спрайт поверх другой поверхности».

Эта операция может быть ускорена с использованием графического процессора с помощью 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 способ блитирования.

В этом примере, текстура создается и отправляется в память GPU только один раз, и с тех пор она повторно эффективно, смотрите также: Difference between surface and texture (SDL/general)

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

1

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^