Почему мне нужно использовать SDL_LockTexture и SDL_UnlockTexture для управления аппаратными текстурами с помощью SDL2? Я знаю разницу между «СТАТИЧЕСКИМ» доступом к текстуре и «ПОТОКОВЫМ» доступом к текстуре, но я думаю, что меня смущает, потому что я, кажется, помню, как использовал «SDL_SetTextureColorMod» для настройки цвета «СТАТИЧЕСКИХ» текстур. Итак, почему иногда нам нужно блокировать пиксели, а иногда нет?





Вы должны заблокировать текстуру, чтобы изменить ее пиксели. SDL_SetTextureColorMod этого не делает, он только устанавливает цвет, который умножается на цвет пикселя, когда текстура используется для рендеринга.
Why do I have to use SDL_LockTexture and SDL_UnlockTexture to manipulate hardware textures?
«Аппаратная текстура» означает, что пиксели текстуры хранятся во VRAM и могут быть напрямую доступны графическому процессору во время рендеринга. Вы не можете напрямую изменять память VRAM. SDL_LockTexture возвращает указатель на буфер, доступный для CPU, а SDL_UnlockTexture копирует этот (модифицированный) буфер обратно в VRAM.