Skip to main content
GameDev.net gamedev.net
🔒 Locked

modified reflection tutorial, HELP! :(

Started by Seriema Feb 18, 2003 at 3:19 AM 0 replies 400+ views
Original Post
Seriema
Seriema
Hi there! I'm trying to implement reflective surfaces. But It's not working correctly...
    
	glColorMask(0,0,0,0);								// Set Color Mask

	glEnable(GL_STENCIL_TEST);							// Enable Stencil Buffer For "marking" The Floor

	glStencilFunc(GL_ALWAYS, 1, 1);						// Always Passes, 1 Bit Plane, 1 As Mask

	glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);			// We Set The Stencil Buffer To 1 Where We Draw Any Polygon

														// Keep If Test Fails, Keep If Test Passes But Buffer Test Fails

														// Replace If Test Passes

	glDisable(GL_DEPTH_TEST);							// Disable Depth Testing

	glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
 	cSceneData::GetInstance()->m_Quad.Render();

//

	glEnable(GL_DEPTH_TEST);							// Enable Depth Testing

	glColorMask(1,1,1,1);								// Set Color Mask to TRUE, TRUE, TRUE, TRUE

	glStencilFunc(GL_EQUAL, 1, 1);						// We Draw Only Where The Stencil Is 1

														// (I.E. Where The Floor Was Drawn)

	glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);				// Don't Change The Stencil Buffer

	glEnable(GL_CLIP_PLANE0);							// Enable Clip Plane For Removing Artifacts

														// (When The Object Crosses The Floor)

	glClipPlane(GL_CLIP_PLANE0, eqr);					// Equation For Reflected Objects

	glPushMatrix();										// Push The Matrix Onto The Stack

		glMultMatrixf(reflectionmatrix);
		cSceneData::GetInstance()->m_Box.Render();
	glPopMatrix();										// Pop The Matrix Off The Stack

	glDisable(GL_CLIP_PLANE0);							// Disable Clip Plane For Drawing The Floor

	glDisable(GL_STENCIL_TEST);							// We Don't Need The Stencil Buffer Any More (Disable)



	glEnable(GL_BLEND);									// Enable Blending (Otherwise The Reflected Object Wont Show)

	glDisable(GL_LIGHTING);								// Since We Use Blending, We Disable Lighting

	glColor4f(1.0f, 1.0f, 1.0f, 0.8f);					// Set Color To White With 80% Alpha

	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);	// Blending Based On Source Alpha And 1 Minus Dest Alpha

	cSceneData::GetInstance()->m_Quad.Render();
	
	glEnable(GL_LIGHTING);								// Enable Lighting

	glDisable(GL_BLEND);								// Disable Blending

 	cSceneData::GetInstance()->m_Box.Render();
    
can someone tell me what's wrong? I've mixtured the NeHe tutorial with a reflection matrix I found. But it just renders two boxes and the quad cutting the "copy-box" in half by z-value. [edit - code got ugly] [edited by - Seriema on February 18, 2003 4:21:18 AM]
[ ThumbView: Adds thumbnail support for DDS, PCX, TGA and 16 other imagetypes for Windows XP Explorer. ] [ Chocolate peanuts: Brazilian recipe for home made c

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.