2007-06-14 Ruby/SDLの3bppのサーフェスは ruby pixelsメソッドがバグってる。SDL::Surface#pixelsは、RGBデータをStringで吐くメソッドだ。 出力されるStringの大きさは、普通に考えると 幅x高さxbpp(Bits Per Pixel)になる。 ところが、new_fromを使って3bppのサーフェスを作ると、内部でラインごとにパディングが発生する。1行の幅xbppが4で割り切れないとき、1〜3個の00がはさまれるのだ。 しかし、このサーフェスのpixelsは、このパディングを無視して真正直に 幅x高さxbpp だけの大きさのStringを吐く。末尾が切れている。 ……しばらく悩みましたとも、ええ。