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