1024x1024 の背景テクスチャがあり、100x100 のスプライト (これもテクスチャに格納されています) を背景テクスチャの左下隅にレンダリングしようとしています。
スプライトを 50% の不透明度でレンダリングしたいと考えています。これは、シェーダーを使用する GPU ではなく、CPU で行う必要があります。私が見つけたほとんどの例は、シェーダーを使用してこれを実現しています。
これを行う最善の方法は何ですか?
1024x1024 の背景テクスチャがあり、100x100 のスプライト (これもテクスチャに格納されています) を背景テクスチャの左下隅にレンダリングしようとしています。
スプライトを 50% の不透明度でレンダリングしたいと考えています。これは、シェーダーを使用する GPU ではなく、CPU で行う必要があります。私が見つけたほとんどの例は、シェーダーを使用してこれを実現しています。
これを行う最善の方法は何ですか?
CPU側のopenglコマンドを意味しているので、固定機能(または固定パイプライン)を使用していると思います。これは、「シェーダーなし」の要求から推測します。「これを CPU で実行する」ということは、実際にはテクスチャの取得/マッピングを実行して CPU でアクセスし、ピクセルでループし、glTexImage を使用して結果をグラフィック カードにコピーするか、後でテクスチャをアンマップすることを意味するためです。この最後のアプローチは非常に非効率的です。したがって、ブレンドを有効にするだけです。
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
順番にレンダリングします。背景、次に 100x100 の画像を含む小さなクワッド。100x100 画像からアルファ チャネルを取得してブレンドを作成します。画像編集ツールから一定の 50% に設定できます。