北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

NSImage→OpenGLの座標系修正

先のOpenGL化で、y座標をひっくり返すコードもついでにメモ。



	int w  = (int) [bitmap size].width;
int h = (int) [bitmap size].height;

unsigned char* byte_image = [bitmap bitmapData];
GLubyte* reverse_image;
int i, j, b;
int block = [bitmap hasAlpha] ? 4 : 3;
//w(列)、h(行)、block(1ピクセルのバイト数)の長さの配列
reverse_image = malloc(block * sizeof(GLubyte) * w * h);
for(j = 0; j < h; j++){
for(i = 0; i < w; i++){
for(b = 0; b < block; b++)
reverse_image[(w*j + i)*block + b] =
(GLubyte) byte_image[(w*(h - 1 - j) + i)*block + b];
}
}






bitmapがNSImage *。アルファ値の有無の部分が多少泥臭いけど、こうなるでしょう。