SDL_LockSurface 関数の実装を調べると、次のことがわかりました。
/* This needs to be done here in case pixels changes value */
surface->pixels = (Uint8 *)surface->pixels + surface->offset;
なぜpixelsその値を変更するのでしょうか? 実際のピクセル配列の位置も変わるのでしょうか?
特に、次のことを考慮してください。
SDL_LockSurface(sur);
Uint8* my_pixels = reinterpret_cast<Uint8*>sur->pixels;
SDL_UnlockSurface(sur);
my_pixelsさて、私がそれを解放しない限り、それが現在指している表面のピクセル配列を常に指していると仮定しても安全surですか? (それらの巨大な配列を移動するのは少しばかげているように見えるので、そうであるとほぼ確信していますが、それでも...多分私は愚かです...)