因此,当我通过操纵h和w成员使表面变大时,我最终得到了奇怪的结果 - 增加的空间充满了表面上已经存在的乱码版本。有什么方法我可以避免这个/清除增加的空间(将其设置为alpha)?
答案 0 :(得分:2)
我只使用了SDL 2,但我想我知道,你的代码有什么问题。
表面的像素数据是一个简单的1D像素阵列。该数组的长度等于w*h
。访问像素的方式如下:pixeldata[y * w + x]
。
这意味着,您不能只更改两个成员来更改曲面的尺寸。使用此表面时,它将导致对像素数据阵列的越界访问。
因此,如果要调整曲面大小,则应创建一个新曲面并将所需像素复制到曲面。
当然,可以手动调整大小,但你不应该在没有充分理由的情况下尝试这样做。