0
2つのビットマップをマージして、結果のビットマップをマスクとして使用する必要があります。以前に描かれたシステムに影響を与えずにOpenGL-1.0でこれを行う方法はありますか?ここでOpenGLES:2つのマスク(ビットマップ)をマージする
私のアルゴリズムです:
1.-は、(不透明な)背景を描く 2.-マスクを描く(これは2つのビットマップの組み合わせである) 3.-は、なるように(このニーズビットマップを描きますマスクされた)。
私はOpenGLES 1.0で作業していますので、シェーダは動作しません。どんな助けでも大歓迎です!ここで
は私の描画機能である:
public void onDrawFrame(GL10 gl) {
// clear the screen and depth buffer
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// drawing
gl.glLoadIdentity();
// draw the background
gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE);
gl.glTranslatef(0.0f, 0.0f, -3.72f);
background.draw(gl);
gl.glPopMatrix();
gl.glPushMatrix();
gl.glEnable(GL10.GL_BLEND);
gl.glDisable(GL10.GL_DEPTH_TEST);
// mask1 + mask2
gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -3.72f);
gl.glBlendFunc(GL10.GL_DST_COLOR, GL10.GL_ZERO);
mask1.draw(gl);
gl.glLoadIdentity();
gl.glTranslatef(0.0f, y, -3.72f);
gl.glBlendFunc(GL10.GL_DST_COLOR, GL10.GL_ZERO);
mask2.draw(gl);
gl.glLoadIdentity();
gl.glTranslatef(0.0f, 0.0f, -3.72f);
gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE);
picture.draw(gl);
gl.glDisable(GL10.GL_BLEND);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glFlush();
gl.glPopMatrix();
y -= 0.2f;
}
:
擬似コード私のような何かを行くだろうと考えていますか? 'mask1'と' mask2'は 'picture'のテクスチャとして使用できますか? –
はい。どちらもテクスチャとして使用できます。物事は、1つは固定された位置にあり、もう1つは移動したり回転したりします。結果として、私は両方のマスクの構成だけを表示したいと思います(それらの間に何らかのANDがあります)。 – ilbesculpi
'Background'は画面全体に渡ります。 '写真'はどうですか?これも完全な画面に広がっていますか?マスクは確かにいくぶん小さくなっています。 –