• Advertisement


This topic is now archived and is closed to further replies.

Blending in OpenGL help

This topic is 5382 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Using openGL, I''m try remove the black background on a bitmap. However, whenever I try to do this, the image becomes partially transparent. How can I correct this?
BOOL Initialize (GL_Window* window, Keys* keys)					// Any GL Init Code & User Initialiazation Goes Here

	g_window	= window;
	g_keys		= keys;

	// Start Of User Initialization

	angle		= 0.0f;											// Set Starting Angle To Zero

    if (!LoadGLTextures())						 	            // Jump To Texture Loading Routine

		return FALSE;							                // If Texture Didn''t Load Return FALSE

	glEnable(GL_TEXTURE_2D);						            // Enable Texture Mapping

	glClearColor (0.0f, 0.0f, 0.0f, 0.5f);						// Black Background

	glClearDepth (1.0f);										// Depth Buffer Setup

	glDepthFunc (GL_LEQUAL);									// The Type Of Depth Testing (Less Or Equal)

	glEnable (GL_DEPTH_TEST);									// Enable Depth Testing

	glShadeModel (GL_SMOOTH);									// Select Smooth Shading

	glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);			// Set Perspective Calculations To Most Accurate

	glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);				// Setup The Ambient Light

	glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);				// Setup The Diffuse Light

	glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);			// Position The Light

	glEnable(GL_LIGHT1);			             				// Enable Light One

	glEnable(GL_LIGHTING);		                                // Enable Lighting

	glBlendFunc(GL_SRC_ALPHA,GL_ONE);			// Set The Blending Function For Translucency

glEnable(GL_BLEND);					// Enable Blending

	return TRUE;												// Return TRUE (Initialization Successful)

(in draw function)
glBegin (GL_QUADS);		//  draws the character

      glTexCoord2f(0.0f,  0.0f);	glVertex3f(  xpos, ypos, zpos);
	  glTexCoord2f(1.0f,  0.0f);	glVertex3f(xpos+1, ypos, zpos);
	  glTexCoord2f(1.0f,  1.0f);	glVertex3f(xpos+1, ypos+1, zpos);
	  glTexCoord2f(0.0f,  1.0f);	glVertex3f(  xpos, ypos+1, zpos);

Share this post

Link to post
Share on other sites

you might want to use "additive"-blending: glBlendFunc(GL_ONE, GL_ONE)

otherwise, you could write a convertation func that *inserts* alpha to your texture and set''s alpha on all those texels to 0 (invisible) where the addition of green, red & blue bytes is 0 (this is, black) - else to 0xff

Share this post

Link to post
Share on other sites

  • Advertisement