2011-12-15 9 views
1

私は32bbpのピクセル配列を持っていますが、ピクセルの青いチャネル/コンポーネントのみを使用しています。このピクセル配列をグレースケール/輝度フォーマットのテクスチャにアップロードする必要があります。たとえば、色が(a:0、r:0、g:0、b:x)の場合は、テクスチャ内で(0、x、x、x)になる必要があります。私は、バージョン2までのOpenGL V1.5OpenGL Rgbaを1コンポーネントからグレースケールに変換する

答えて

3

OpenGLを使用しています

は正確に何をしたいんテクスチャの内部フォーマットGL_LUMINANCEを、持っていました。

OpenGL-3では、これは単一のコンポーネントテクスチャである内部フォーマットGL_R(GL_RED)に置き換えられました。シェーダでは、

gl_FrontColor.rgb = texture().rrr; 

のようなスウィズルを使用することができます。しかし、「静的」を設定するオプションもあります、あなたはテクスチャパラメータでスウィズルそれを呼び出すことができます:あなたは `どのくらい

glTexParameteri(GL_TEXTURE_…, GL_TEXTURE_SWIZZLE_R, GL_RED); 
glTexParameteri(GL_TEXTURE_…, GL_TEXTURE_SWIZZLE_G, GL_RED); 
glTexParameteri(GL_TEXTURE_…, GL_TEXTURE_SWIZZLE_B, GL_RED); 
+0

知っていますかGL_TEXTURE_SWIZZLE_X'トークンがありますか? – genpfault

+1

@genpfault:OpenGL-3以降、実際にはかなり前から拡張がありました。 – datenwolf

関連する問題