使用 SDL2 处理硬件纹理

Joe*_*lli 1 c++ textures pixels sdl-2

为什么我必须使用 SDL_LockTexture 和 SDL_UnlockTexture 来使用 SDL2 操作硬件纹理?我知道“STATIC”纹理访问和“STREAMING”纹理访问之间的区别,但我想我很困惑,因为我似乎记得使用“SDL_SetTextureColorMod”来调整“STATIC”纹理的颜色。那么,为什么有时我们必须锁定像素而有时我们不需要呢?

joe*_*hip 5

您必须锁定纹理才能修改其像素。SDL_SetTextureColorMod不这样做,它只设置一个颜色,当纹理用于渲染时,它会与像素的颜色相乘。

为什么我必须使用 SDL_LockTexture 和 SDL_UnlockTexture 来操作硬件纹理?

“硬件纹理”是指纹理的像素存储在 VRAM 中,渲染时可以由 GPU 直接访问。您不能直接修改 VRAM 内存。SDL_LockTexture返回指向 CPU 可访问的缓冲区的指针,同时SDL_UnlockTexture将此(修改后的)缓冲区复制回 VRAM。