私はルミネッセンスアルファテクスチャを持っています。各ピクセルは2バイトあり、最初のバイトはルミネセンスで、2番目のバイトはアルファです。OpenGL:Luminence + Alphaに似た16ビット内部フォーマットが可能ですか?
緑と青のチャンネルのテクスチャメモリを無駄にすることなく、(フラグメントシェーダ内で)アルファコンポーネントが常に使用されるテクスチャに関係なくアルファを参照するようにGPUにアップロードすることはできますか?これは私が32ビットRGBAテクスチャのためのシェーダ内の別々のコードパスを使用する必要になる、と私は制服/条件を設定しないようにしたいと思いますので、
// fragment shader
vec4 px = texture(tex, uv);
px.r; // is luminescence
px.a; // is alpha (note that .a is used, not .g which would be green for 32bit RGBA textures)
私は内部形式としてGL_RGを使用しないようにしたい理由は、あります異なるテクスチャタイプ。
テクスチャをバインドするたびにスウィズルを設定する必要がありますか、最初にアップロードしたときに1回だけテクスチャを設定する必要がありますか? (スウィズル状態がテクスチャにあるのか、それともグローバルなのか分かりません) –
ああ、ちょうど試してみましたが、テクスチャの状態です。 –
@AnneQuinn: "*私はちょうど試しました*"または私が投稿したリンクを読んで、そのセクションの最上部で "テクスチャパラメータ"がテクスチャオブジェクトの状態の一部であることを非常に明確にします。 –