【问题标题】:SDL 1.2.15 extension of surface issueSDL 1.2.15 扩展表面问题
【发布时间】:2019-07-10 00:12:35
【问题描述】:

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

【问题讨论】:

  • 也许你可以将表面数据复制到一个新创建的你需要的空白表面

标签: c++ sdl sdl-1.2


【解决方案1】:

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

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

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

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

当然,也可以手动调整大小,但你不应该在没有充分理由的情况下尝试这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2011-07-14
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多