TGA ファイルと、TGA を読み取って使用するために必要なものがすべて含まれているライブラリがあります。
このクラスには、pixels() というメソッドがあり、ピクセルが RGBRGBRGB として格納されているメモリ領域を指すポインターを返します。
私の質問は、どうすればピクセル値を取得できますか?
私がこのようなものを作るとしたら:
img.load("foo.tga");
printf ("%i", img.pixels());
適切なアドレスが返されます。
このサイトでこのコードを見つけました:
struct Pixel2d
{
static const int SIZE = 50;
unsigned char& operator()( int nCol, int nRow, int RGB)
{
return pixels[ ( nCol* SIZE + nRow) * 3 + RGB];
}
unsigned char pixels[SIZE * SIZE * 3 ];
};
int main()
{
Pixel2d p2darray;
glReadPixels(50,50, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, &p.pixels);
for( int i = 0; i < Pixel2d::SIZE ; ++i )
{
for( int j = 0; j < Pixel2d::SIZE ; ++j )
{
unsigned char rpixel = p2darray(i , j , 0);
unsigned char gpixel = p2darray(i , j , 1);
unsigned char bpixel = p2darray(i , j , 2);
}
}
}
私にとってはうまくいくと思いますが、プログラムに img から読み取るように指示するにはどうすればよいですか?