2

私はiPhoneopenglESプログラミングの初心者です。2つのテクスチャがあります。最初のテクスチャは背景で、全画面を占めています。最初の画像の上に2番目の画像を印刷していますが、2番目の画像の白い背景が背景の一部を覆っています。前景の画像に色(または白)がない場所に背景を表示したい。glBlendFuncを正しく使用する方法がわかりません。

2番目の画像を印刷する前に、次のようにブレンディングを使用しています。

glBlendFunc(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA); glColor4f(1.0f、1.0f、1.0f、1.0f);

画像:http ://www.flickr.com/x/t/0097002/photos/vjv2010/

4

1 に答える 1

0

前景の画像に色がない場合 (または白) に背景を表示したい。

2 つの選択肢があります。最も簡単な方法は、アルファ テストを使用し、前景画像にアルファ チャネルを追加して、各白いピクセル (またはカラー ゾーンなし) に特別な値 (0.0f と他のすべての 1.0f など) を持たせることです。

次に、前景をレンダリングするときに、アルファ テストを有効にしglEnable(GL_ALPHA_TEST)、アルファ関数を設定します。glAlphaFunc(GL_GREATER, 0.5f)これにより、アルファ値が 0.5f より大きいフラグメントのみが受け入れ/描画され、アルファ値が 0.5f 未満のすべてのフラグメントが破棄/描画されません。

2 番目の選択肢は、あなたが行ったようにブレンディングを使用することですが、追加のアルファ チャネルをフォアグラウンドに追加してglBlendFunc適切に設定する必要もあります。

詳細はこちら: http://iphone-3d-programming.labs.oreilly.com/ch06.html

于 2010-06-25T06:13:48.157 に答える