gpt4 book ai didi

c - 尝试将 SDL_Surface 的大小加倍失败了

转载 作者:行者123 更新时间:2023-12-04 06:17:13 26 4
gpt4 key购买 nike

源始终为 320x240,目标始终为 640x480。

void DoDoubleScaling(SDL_Surface* dest, SDL_Surface* source)
{
assert(dest->w == source->w*2);
assert(dest->h == source->h*2);
for (int y = 0; y < source->h; ++y)
{
for (int x = 0; x < source->w; ++x)
{
SetPixel(dest, x*2, y*2, GetPixel(source, x, y));
SetPixel(dest, x*2+1, y*2+1, GetPixel(source, x, y));
}
}
}

输出如下所示: (请务必以全尺寸查看)。本质上,每隔一个像素就会丢失。我已经尝试了各种可能性,但我找不到我哪里出错了。
GetPixelSetPixel简单地设置/接收表面的颜色,给定 X 和 Y [和颜色]。

最佳答案

用:

        SetPixel(dest, x*2, y*2, GetPixel(source, x, y));
SetPixel(dest, x*2, y*2+1, GetPixel(source, x, y));
SetPixel(dest, x*2+1, y*2, GetPixel(source, x, y));
SetPixel(dest, x*2+1, y*2+1, GetPixel(source, x, y));

代替:
        SetPixel(dest, x*2, y*2, GetPixel(source, x, y));
SetPixel(dest, x*2+1, y*2+1, GetPixel(source, x, y));

为了加速:存储 GetPixel(source, x, y) 的返回值,因此您不需要每轮调用它 4 次。

关于c - 尝试将 SDL_Surface 的大小加倍失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com