2009-04-14 4 views
3

私は、私はこのようなレンダリングてるイメージがありますグレースケールのglDrawPixels?

glDrawPixels(image->width, image->height, GL_BGR, GL_UNSIGNED_BYTE, image->imageData); 

はありますとにかく、私は(最初のテクスチャにそれをロードせず)の代わりにグレースケールでそれを描くことができますか?例えば、ブルーのコンポーネントだけがL2ノルムなどではなくグレイ値に使用されているかどうかは気にしません。ただ速く汚れた出力が必要です。

GL_LUMINANCEは、3チャンネルの画像では機能しない点を除いて、優れています。


@timday:

http://img164.imageshack.us/img164/3603/grayscale.png

答えて

5

あなたがしようとするためのひねくれた考え方、それがうまくいくかどうかはさっぱりだが:

glPixelZoom(1.0f/3.0f,1.0f); 
glDrawPixels(3*width,height,GL_LUMINANCE,GL_UNSIGNED_BYTE,data); 

つまり、あなたの3を扱います1チャンネル(グレースケール)画像の3倍の幅の画像であり、x倍率を使用して幅を縮めて補正します。私はGLが常にズームしたglDrawPixelsのための最近隣のサンプリングを行うと信じています。したがって、必要なときに、サンプルの各トリプルから同じ成分を一貫して選ぶべきです。

+1

ああ私の神......私はその作品が信じられない!それは画像を半分に分割し、片側を他のものよりも細かく分割しますが、機能します。 – mpen

+0

1.0/3.0が内部的に維持される精度(特に、一定のサイズまでは正常に動作する場合)と関係がある可能性があります。私は非常にわずかに調整するか、ピクセルあたり4バイトのフォーマットと0.25のズーム係数を使用することをお勧めします。 – timday

関連する問題