c++ - SDL 1.2.15 扩展面问题

标签 c++ sdl sdl-1.2

当我通过操纵 h 和 w 成员使表面变大时,我最终得到了奇怪的结果 - 添加的空间充满了表面上已有内容的乱码版本。有什么方法可以避免这种情况/清除添加的空间(将其设置为 alpha)?

enter image description here

最佳答案

我只用过 SDL 2,但我想我知道,你的代码有什么问题。

表面的像素数据是一个简单的一维像素阵列。此数组的长度等于 w*h。访问一个像素是这样实现的:pixeldata[y * w + x]

这意味着,您不能只更改两个成员来更改曲面的尺寸。使用该表面时会导致越界访问像素数据数组。

因此,如果您想调整表面的大小,您应该创建一个新表面并将所需的像素复制到它。

当然,可以手动调整它的大小,但如果没有充分的理由,您不应该尝试这样做。

关于c++ - SDL 1.2.15 扩展面问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25827021/

相关文章:

c++ - SIGABRT 和线程相关的异常,但在调试期间工作正常

c - 如何循环SDL_Surface?

c++ - 编译发布

c++ - 为什么我的图像无法渲染?

c++ - QHash 迭代器示例 - 运算符 << 不匹配?

c++ - 有没有办法使用一个文件句柄监视千个目录

c++ - 在 C++ 中如何将字符串数组转换为 float 数组?

c++ - SDL_FillRect 不绘图?

c - SDL 1.2 必须按两次键才能使事件生效

c++ - 如何在 Raspbian C++ 项目上修复 "include"libvlc 和 sdl1.2?