首页 > 解决方案 > 使用 SDL2 处理硬件纹理

问题描述

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

标签: c++texturessdl-2pixels

解决方案


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

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

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


推荐阅读