c - 使用 SDL_TEXTUREACCESS_STREAMING 绘制到纹理
问题描述
我正在尝试执行以下操作:
- 使用 SDL_CreateTextureFromSurface 从 bmp 图像创建灰度 spritesheet 纹理
- 创建此 spritesheet 的副本,该副本具有逐像素映射到它的颜色
据我了解,要逐个像素地编辑纹理,我需要在 SDL_CreateTexture 函数中使用 SDL_TEXTUREACCESS_STREAMING 标志。虽然我找不到任何方法将另一个纹理复制到带有 SDL_TEXTUREACCESS_STREAMING 的纹理上。
如果它是 SDL_TEXTUREACCESS_TARGET,我可以将其设置为渲染目标并使用 SDL_RenderCopy。
我也无法获取要从中复制的纹理的像素数据并将 SDL_TEXTUREACCESS_STREAMING 设置为它,因为原始纹理是使用具有 SDL_TEXTUREACCESS_STATIC 的 SDL_CreateTextureFromSurface 创建的。
我的代码是:
unsigned char* pixels;
int pitch;
SDL_Texture colss = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, ssw*16, ssh*16);
SDL_LockTexture(colss, NULL, (void**)&pixels, &pitch);
printf("%s",SDL_GetError());
//edit pixel data
for(int i = 0; i < pitch * ssh*16; i++) {
if (pixels[i] != 0) {
pixels[i] = 255;
}
}
SDL_UnlockTexture(colss);
如何先将 colss 的像素数据设置为另一个纹理的像素数据?或者使用 SDL_TEXTUREACCESS_STREAMING 在纹理上绘制任何东西?
解决方案
推荐阅读
- c# - 遍历嵌套的 XML 节点并将其保存到 asp.net c# 中的列表中
- python - 找不到烧瓶模板文件夹
- php - CakePHP 3.8 将数组转换为 Cake\ORM\Entity
- python - 我尝试按如下方式安装驱动器以进行协作。更改了根目录。然而它说在下一步中找不到文件。出了什么问题?
- vue.js - 如何在 vue-multiselect 组件上调用客户端验证?
- sql - Bigquery:检索给定独特组合的信息
- c++ - 四边形的二维旋转
- php - 如何在 Wordpress 中验证后保存自定义用户字段数据
- ssl - 在 Maximo/Jython 中下载 SetupTools 失败并出现 HTTP 错误 403 SSL is required
- python-3.x - 在熊猫数据框中创建一列