使用SDL2操纵硬件纹理

时间:2018-07-05 03:18:21

标签: c++ textures sdl-2 pixels

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

1 个答案:

答案 0 :(得分:3)

您必须锁定纹理才能修改其像素。 SDL_SetTextureColorMod不会这样做,它只会设置一种颜色,该颜色在使用纹理进行渲染时会乘以像素的颜色。

  

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

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