最終更新: mikk_ni3_92 2008年12月26日(金) 18:25:16履歴
現在地: メニュー >> 発展編05 >> 発展編05::グレイスケール化
となる。
「GL_LUMINANCE」を指定してglReadPixels()を実行する場合、以下の式が使われる。
これを使って以下のように書ける。
[例]
※注意点
スケール変換したら元にもどす。
サンプルコード
- 一度「カラーバッファ」にカラーで書きこむ。
- 各チャネルでglPixelTransfer()を設定し、「GL_LUMINANCE」を指定してglReadPixels()を呼ぶ。
- 読み込んだデータをカラーバッファに書き込む
となる。
「GL_LUMINANCE」を指定してglReadPixels()を実行する場合、以下の式が使われる。
luminance = (red * redScale + redBias) + (green * greenScale + greenBias) + (blue * blueScale + blueBias)
これを使って以下のように書ける。
[例]
glDrawPixels(w,h,GL_BGR,GL_UNSIGNED_BYTE,rgb); //1度カラーバッファに書き込む //グレイスケール変換 glPixelTransferf(GL_RED_SCALE, 0.299f); glPixelTransferf(GL_GREEN_SCALE, 0.587f); glPixelTransferf(GL_BLUE_SCALE, 0.114f); //グレイスケールで読み込む glReadPixels(0,0,w, h, GL_LUMINANCE, GL_UNSIGNED_BYTE, gray); glPixelTransferf(GL_RED_SCALE, 1.0f); glPixelTransferf(GL_GREEN_SCALE, 1.0f); glPixelTransferf(GL_BLUE_SCALE, 1.0f);
※注意点
スケール変換したら元にもどす。
サンプルコード