【问题标题】:How can I read / write pixels in a SDL_Surface in SDL2?如何在 SDL2 的 SDL_Surface 中读取/写入像素?
【发布时间】:2018-02-11 17:37:01
【问题描述】:

如何在 SDL2 中读取和写入 SDL_Surface 中包含的像素数据? (1)

我尝试在网上搜索解决方案,但没有找到任何让我感到惊讶的东西。我记得它可以在 SDL 1.2 中完成,但我找不到与 SDL 2 相关的任何内容。*

*(除了处理纹理,这不是我想做的。结果是一样的,但我不想编辑驻留在 GPU 内存中的对象。)

我有一个 SDL_Surface,我想操纵像素。我想这样做的原因是因为我想将所有黑色像素转换为白色像素。 (2)

然后我将表面加载到纹理对象中进行渲染。

我无法找到 (2) 的解决方案,因此我尝试了 (1) 的手动方法。

【问题讨论】:

    标签: sdl-2


    【解决方案1】:

    SDL_Surface 结构有一个名为 pixels 的字段,它是一个数组,包含从左到右、从上到下的每个像素,使用某种像素格式(由字段 format 给出)。

    如果SDL_MUSTLOCK(surface) 为假,您可以直接修改此像素数组。否则,您需要使用SDL_LockSurface(和SDL_UnlockSurface)事先锁定表面,然后再解锁。

    更多信息请见SDL_Surface page。考虑到这句话,如果表面已针对 RLE 加速进行了优化,pixels 字段是只读的。否则直接修改像素应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多