创建纹理
有三个 API 可以用来创建纹理:
SDL_CreateTexture参数少,使用方便,适用于创建简单的纹理SDL_CreateTextureFromSurface
适用于从已有图像数据创建纹理SDL_CreateTextureWithProperties可以指定各种属性,功能强大,用起来也比较复杂,适用于另外两个 API 无法满足需求的情况
实际上前两个 API 内部都是通过调用 SDL_CreateTextureWithProperties 实现纹理创建的。这也是 SDL API 设计的特点,对于常用操作有简洁的 API 实现,同时也有使用复杂但是功能更灵活强大的 API 提供。
这里我们准备创建一个最小的四种颜色的纹理,像素尺寸 2x2,也就是总计只有 4 个像素。首先使用数组定义图像数据:
uint8_t pixels[4 * 2 * 2] = {
0, 0, 255, 255, // b, g, r, a
0, 255, 0, 255, //
255, 0, 0, 255, //
0, 255, 255, 255 //
};
SDL 对像素格式的定义是按照从高位到低位的颜色命名的,所以上面的数据对应的格式是 SDL_PIXELFORMAT_ARGB8888。
由于已经有像素数据,所以我们可以从图像数据创建 Surface 然后调用 SDL_CreateTextureFromSurface 从 Surface 创建纹理:
SDL_Surface* surface = SDL_CreateSurfaceFrom(2, 2, SDL_PIXELFORMAT_ARGB8888, pixels

:纹理渲染&spm=1001.2101.3001.5002&articleId=150579597&d=1&t=3&u=baaaec2aefab4a92b4302228976a881a)
361

被折叠的 条评论
为什么被折叠?



