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

Разница между поверхностью и текстурой (SDL/общий)

Может ли кто-нибудь объяснить мне простыми словами, в чем разница между текстурой и поверхностью? Я видел, что он использовался в SDL2 как SDL_Surface и SDL_Texture. SDL_Texture создается из SDL_Surface, который, в свою очередь, создается из образа/растрового изображения. Оба являются совокупностью пикселей. Но я не вижу главного различия между ними (что-то нужно делать с GPU?)

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

4b9b3361

Ответ 1

В принципе, ваше предположение "что-то нужно делать с GPU"? является правильным.

SDL_Surface используется при рендеринге программного обеспечения. С программным рендерингом, как saloomi2012 правильно заметили, вы используете обычную RAM для хранения данных изображения. Таким образом, в большинстве случаев вы можете напрямую обращаться к буферу данных, связанному с поверхностью, изменяя его содержимое, то есть использовать CPU, следовательно, имя программного обеспечения.

SDL_Texture, с другой стороны, используется в аппаратном рендеринге, текстуры хранятся в VRAM, и у вас нет доступа к нему напрямую, как с SDL_Surface. Операции рендеринга ускоряются с помощью GPU, используя внутренний интерфейс OpenGL или DirectX (доступный только для Windows), который, в свою очередь, использует ваше видеооборудование, следовательно, имя аппаратного рендеринга.

Излишне говорить, что аппаратное рендеринг на порядок быстрее, чем рендеринг программного обеспечения, и его всегда следует рассматривать как основной вариант.

Ответ 2

SDL_Texture загружается в вашу видеокарту VRAM вместо обычной RAM.

Ответ 3

Поверхности используют вашу RAM-память, а текстуры используют вашу видеокарту, которая быстрее чем поверхности.