ソースは常に320x240です、destは常に640x480です。SDL_Surfaceの倍精度の試みはひどく失敗します
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));
}
}
}
出力は(フルサイズで表示してください)です。本質的に、1秒ごとのピクセルが欠落しています。私はあらゆる種類の可能性を試してきましたが、どこが間違っているのか分かりません。
GetPixel
およびSetPixel
は、XとY [および色]を指定すると、サーフェスの色を設定または受信します。
幅と高さの両方を倍にすると、効果的に領域が4倍になります。したがって、各ソースピクセルに対して、4つのデスティネーションピクセルを書き込む必要があります。 – pmg
ああ。確かに。解決済み。ごめんなさい。 – Dataflashsabot