Game Development Community

Applying shader to engine-generated objects

by Bryce "Cogburn" Weiner · in Torque Game Engine Advanced · 02/18/2007 (2:22 pm) · 1 replies

I'm passing a shader parameter to a custom world object (a laser beam) and almost have it working, except I'm having some issues applying the shader to a object.

I tried referencing how precipitation works, but it's not quite analogous. I'm not using materials and am using shader parameters to customize the object.

Based on the following code, where would setShader() go?

//glEnable(GL_BLEND);
				GFX->setAlphaBlendEnable(true);

	         //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
				GFX->setSrcBlend(GFXBlendSrcAlpha);
				GFX->setDestBlend(GFXBlendInvSrcAlpha);

	         // Enable Texturing.
	         //glEnable(GL_TEXTURE_2D);  ---> Check tsLastDetail.cpp for reference
				GFX->setTextureStageColorOp(0, GFXTOPModulate);
				GFX->setTextureStageColorOp(1, GFXTOPDisable);

	         // Select the objects' texture.
			 //glBindTexture(GL_TEXTURE_2D, mTextureHandles[mIndex].getGLName());  ---> Check fxFoilageReplicator.cpp for reference
				GFX->setTexture(0, mTextureHandles[mIndex]);

			 // Set Colour/Alpha.
	         //glColor4f(1,1,1,1); ---> Check tsLastDetail.cpp for reference
				
				//glBegin(GL_QUADS);  ---> Check fxlight.cpp for reference
				//GFX->setupGenericShaders( GFXDevice::GSModColorTexture );
				PrimBuild::color4f(1,1,1,1);
				PrimBuild::begin(GFXTriangleFan, 4);
				//glTexCoord2f(0,0);
				PrimBuild::texCoord2f(0, 0);
				//glVertex3f(sPt1.x, sPt1.y, sPt1.z);   
				PrimBuild::vertex3f(sPt1.x, sPt1.y, sPt1.z);
				//glTexCoord2f(1,0);
				PrimBuild::texCoord2f(1, 0);
				//glVertex3f(sPt2.x, sPt2.y, sPt2.z);
				PrimBuild::vertex3f(sPt2.x, sPt2.y, sPt2.z);
				//glTexCoord2f(1,1);
				PrimBuild::texCoord2f(1, 1);
				//glVertex3f(ePt2.x, ePt2.y, ePt2.z);
				PrimBuild::vertex3f(ePt2.x, ePt2.y, ePt2.z);
				//glTexCoord2f(0,1);
				PrimBuild::texCoord2f(0, 1);
				//glVertex3f(ePt1.x, ePt1.y, ePt1.z);
				PrimBuild::vertex3f(ePt1.x, ePt1.y, ePt1.z);
				//glEnd();
				PrimBuild::end();                                   
                

			 // Restore our canonical rendering state.
	         //glDisable(GL_BLEND);
				GFX->setAlphaBlendEnable(false);
	         //glDisable(GL_TEXTURE_2D);
				GFX->setLightingEnable(false);

I'm prepping the shader properly, but after I set the shader arguments, no matter where I put setShader() it never renders.

#1
02/19/2007 (8:59 am)
I went to Starbucks after I posted... and while standing in line it dawned on my its not setShader()....

It's mShader->process().

>_<