1

私はopenglをまったく使用したことがなく、グラデーションを適用したテクスチャを描画するのに助けが必要です。

今、私は次のコードでテクスチャを描いています:

glPushMatrix();
glBindTexture(GL_TEXTURE_2D,fcr.texture);
glTranslatef(trans, 0, 0);
glScalef(sc,sc,1.0);
glColor4f(1.0,1.0,1.0,0.4);
glDrawArrays(GL_TRIANGLE_STRIP,0,4);
glColor4f(1,1,1,1);

上記のコードglColor4f(1.0,1.0,1.0,0.4);では、描画された画像に透明度を適用しています。ここで、無地の透明色の代わりに、フェードアウト効果をシミュレートするために、画像に透明なグラデーションを適用したいと思います。

このスレッドを見つけたiPhoneOpenGL-テクスチャをグラデーションフェードアウトする方法は?、これは私の質問と同じですが、反射ではなくメイン画像自体にグラデーションを適用する必要がある点が異なります。しかし、私は与えられた答えから解決策を理解することができませんでした。

を使用する必要があると思いますglTexEnviが、グラデーションを使用して別の画像を描画するにはどうすればよいですか?

4

1 に答える 1

1

クワッドを描画する前にglColor4fを呼び出す代わりに、クワッドの4つの頂点のそれぞれが異なるアルファ値を取得するようにglColorPointer(またはglVertexAttribPointer)を設定できますか?

つまり、RGBA値:

 (x,x,x,1)       (x,x,x,0)
     -----------------
     |               |
     |               |
     |               |
     |               |
     |               |
     |               |
     -----------------
  (x,x,x,1)      (x,x,x,0)

これにより、右から左へのアルファグラデーションが得られます。

于 2012-04-06T16:53:03.813 に答える