Special Effects
Aha! Now it works! Thanks Jeff.
How would I do that and still keep my mask working? My code is this:
glLoadIdentity();
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_DST_COLOR,GL_ZERO);
glTranslatef(pos_x,pos_y,pos_z);
glRotatef(rotate, 0.0, 1.0, 0.0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, mask.texID);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3d( 0.0f, 0.0f, 0.1f);
glTexCoord2f(1.0f, 0.0f); glVertex3d( squareSize, 0.0f, 0.1f);
glTexCoord2f(1.0f, -1.0f); glVertex3d(squareSize, -squareSize, 0.1f);
glTexCoord2f(0.0f, -1.0f); glVertex3d(0.0f, -squareSize, 0.1f);
glEnd();
glDisable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_ONE, GL_ONE);
glBindTexture(GL_TEXTURE_2D, texture.texID);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3d( 0.0f, 0.0f, 0.1f);
glTexCoord2f(1.0f, 0.0f); glVertex3d( squareSize, 0.0f, 0.1f);
glTexCoord2f(1.0f, -1.0f); glVertex3d(squareSize, -squareSize, 0.1f);
glTexCoord2f(0.0f, -1.0f); glVertex3d(0.0f, -squareSize, 0.1f);
glEnd();
glDisable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1.0, 1.0, 1.0, 0.7);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3d( 0.0f, 0.0f, 0.1f);
glTexCoord2f(1.0f, 0.0f); glVertex3d( squareSize, 0.0f, 0.1f);
glTexCoord2f(1.0f, -1.0f); glVertex3d(squareSize, -squareSize, 0.1f);
glTexCoord2f(0.0f, -1.0f); glVertex3d(0.0f, -squareSize, 0.1f);
glEnd();
glEnable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
glLoadIdentity();
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_DST_COLOR,GL_ZERO);
glTranslatef(pos_x,pos_y,pos_z);
glRotatef(rotate, 0.0, 1.0, 0.0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, mask.texID);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3d( 0.0f, 0.0f, 0.1f);
glTexCoord2f(1.0f, 0.0f); glVertex3d( squareSize, 0.0f, 0.1f);
glTexCoord2f(1.0f, -1.0f); glVertex3d(squareSize, -squareSize, 0.1f);
glTexCoord2f(0.0f, -1.0f); glVertex3d(0.0f, -squareSize, 0.1f);
glEnd();
glDisable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_ONE, GL_ONE);
glBindTexture(GL_TEXTURE_2D, texture.texID);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3d( 0.0f, 0.0f, 0.1f);
glTexCoord2f(1.0f, 0.0f); glVertex3d( squareSize, 0.0f, 0.1f);
glTexCoord2f(1.0f, -1.0f); glVertex3d(squareSize, -squareSize, 0.1f);
glTexCoord2f(0.0f, -1.0f); glVertex3d(0.0f, -squareSize, 0.1f);
glEnd();
glDisable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1.0, 1.0, 1.0, 0.7);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3d( 0.0f, 0.0f, 0.1f);
glTexCoord2f(1.0f, 0.0f); glVertex3d( squareSize, 0.0f, 0.1f);
glTexCoord2f(1.0f, -1.0f); glVertex3d(squareSize, -squareSize, 0.1f);
glTexCoord2f(0.0f, -1.0f); glVertex3d(0.0f, -squareSize, 0.1f);
glEnd();
glEnable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
Doing a mask in one pass would be a lot better.
Quote:Originally posted by DavidAnd I would do that how...? Sorry for the newbie questions
Doing a mask in one pass would be a lot better.
Try loading a file with an alpha mask into a texture with GL_RGBA and then display this texture with blending on and glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
Possibly Related Threads...
| Thread: | Author | Replies: | Views: | Last Post | |
| Pixel Art: a special program required?!?! | Max | 4 | 4,497 |
May 1, 2005 02:06 PM Last Post: Max |
|

