为什么我必须使用SDL_LockTexture和SDL_UnlockTexture来通过SDL2操作硬件纹理?我知道“ STATIC”纹理访问和“ STREAMING”纹理访问之间的区别,但是我想我很困惑,因为我似乎记得使用“ SDL_SetTextureColorMod”来调整“ STATIC”纹理的颜色。那么,为什么有时需要锁定像素而有时却不需要锁定像素呢?
答案 0 :(得分:3)
您必须锁定纹理才能修改其像素。 SDL_SetTextureColorMod
不会这样做,它只会设置一种颜色,该颜色在使用纹理进行渲染时会乘以像素的颜色。
为什么必须使用SDL_LockTexture和SDL_UnlockTexture来操纵硬件纹理?
“硬件纹理”是指纹理的像素存储在VRAM中,渲染时可由GPU直接访问。您不能直接修改VRAM内存。 SDL_LockTexture
返回指向CPU可以访问的缓冲区的指针,而SDL_UnlockTexture
将此(修改后的)缓冲区复制回VRAM。