Cocoaの仕様変更??
OpenGLViewで書いた内容を保存する手順を少し修正する必要があった.
といっても
今までとの違いは
GPUからCPU側に持ってくる(?)ところの記述で
下のようにGL_RGBからGL_RGBAに変更するだけだった.
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (GLubyte*)img);
どうも
Snow Leopardになってから入れたXcodeからは
画像読み込みやNSColorを使っての操作でアルファチャンネルが勝手にオンになるみたい.
以前のCocoaだと
アルファチャンネルの存在を無視したコードを書いても
一応,動くことは動いていたのですが...
まぁ僕のソースの書き方がよくないので仕方ないか(笑
ちなみに
一連の手順を以下のような感じに書いています.
問題に気づいたのは保存した画像がつぶれてたからです.
以下のソースのsamplesの値が3ではなくて4になっていたので修正しました.
//ローカル変数の宣言 int i,j,k; NSData* saveImageData = nil; NSString* path = nil; NSBitmapImageRep* bitmap = nil; int width,height,rowbytes,samples; unsigned char *img=NULL,tmp; //GPU(?)のピクセルデータを格納する為のNSBitmapImageRepを作る [glView lockFocus]; bitmap = [[[NSBitmapImageRep alloc] autorelease] initWithFocusedViewRect:[glView bounds]]; [glView unlockFocus]; //情報を抽出(使わないものもある) img = [bitmap bitmapData]; width = [bitmap pixelsWide]; height = [bitmap pixelsHigh]; rowbytes = [bitmap bytesPerRow]; samples = [bitmap samplesPerPixel]; /* OpenGLのglReadPixelsを使ってデータを読み込む */ //読み込むバッファを指定する glReadBuffer(GL_FRONT); //データの格納形式を指定する glPixelStorei(GL_PACK_ALIGNMENT, 1); //データの呼び出し glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (GLubyte*)img); //上下が反転して格納されているので元に戻す for (j=0; j