6

私はiPhoneでOpenGLES1.1を10か月間使用していますが、その間、私が実行できなかった一見単純なタスクが1つあります。それは、テクスチャオブジェクトをプログラムでフェードすることです。シンプルに保つために:コード制御下で、テクスチャ(アルファ付き)が適用された単純な2D三角形をアルファフェードするにはどうすればよいですか?単純な色の背景ではなく、シーン上にあるときにフェードイン/フェードアウトしたいと思います。これまでのところ、これを行う必要がある唯一のテクニックは、テクスチャの複数のプリフェードされたコピーを含むテクスチャを作成することです。(うん)

例として、AppleのGLSpriteサンプルコードを開始点として使用してこれを行うことはできません。すでに、独自のアルファを持つテクスチャでクワッドをテクスチャリングしています。そのオブジェクトをフェードインおよびフェードアウトしたいと思います。

4

2 に答える 2

15

たぶん私はあなたを正しく理解していないかもしれませんが、私にはそれは些細なことのように思えます、そして私はそれを私のアプリでうまくやっています。行く方法は次のとおりです。

  1. テクスチャリングと必要なものすべてを有効にする
  2. ブレンディングを有効にする:glEnable(GL_BLEND)
  3. ブレンドモードを選択しますglBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
  4. ブレンドする色を設定します。glColor4f(r * a, g * a , b * a, a)
  5. ジオメトリを描く

ブレンド機能は、事前に乗算された色/テクスチャを使用するポーターダフ用です。GL_TEXTURE_ENV_MODEに設定する必要がありますがGL_MODULATE、これがデフォルトです。

于 2009-10-15T13:12:34.790 に答える
2

ニコライの解決策は正しいです。Apple フォーラムで私が言ったことは無視してください。テクスチャは事前に乗算されているため、頂点ごとのカラーも同様である必要があります。GL_SRC_ALPHAではなくGL_ONEを使用し、次のようにします。

glColor4f(1., 1., 1., myDesiredAlpha);
glColor4f(myDesiredAlpha, myDesiredAlpha, myDesiredAlpha, myDesiredAlpha);
于 2009-10-16T17:30:41.303 に答える