Мне нужно объединить два растровых изображения, чтобы использовать полученное растровое изображение в качестве маски. Есть ли способ сделать это в OpenGL-1.0, не затрагивая ранее нарисованную систему.
Вот мой алгоритм:
1.- нарисуйте фон (непрозрачный) 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
? - person Stefan Hanke   schedule 26.03.2012Background
занимает весь экран. А как насчетpicture
? Это тоже охватывает весь экран? Маски, конечно, несколько меньше. - person Stefan Hanke   schedule 27.03.2012