How do you pass a float to a shader program?

Started by
1 comment, last by DividedByZero 13 years, 4 months ago
Hi Guys,

I am new to shader programming (like 1 Hr new :) and I can't work out how to send a float value from C++ to my shader.

The shader itself is working fine. If I set the 'nTest' value manually from within the shader I can make my object lighter of darker. But, I cant seem to get a value over to the shader from my app.

I am trying to send the value over using the following lines.

D3DXHANDLE nTest=mFX->GetParameterByName(0,"nTest");
mFX->SetFloat(nTest,0.5f);


This is my shader;
uniform extern float4x4 gWVP;uniform extern float fTest;	struct OutputVS{	float4 posH : POSITION0;};OutputVS TransformVS(float3 posL : POSITION0){	OutputVS outVS = (OutputVS)0;	outVS.posH = mul(float4(posL, 1.0f), gWVP);	return outVS;}float4 TransformPS() : COLOR{	float4 AmbientColor = float4(1.0f,1.0f,1.0f,1.0f);	return AmbientColor * fTest;}technique TransformTech{	pass P0	{		vertexShader = compile vs_2_0 TransformVS();		pixelShader  = compile ps_2_0 TransformPS();		FillMode = Wireframe;    }}


Be gentle, I am a complete newcomer to shaders :)
Advertisement
D3DXHANDLE nTest=mFX->GetParameterByName(0,"nTest");

Shouldn't that be "fTest" instead of "nTest"?
Oh man, silly mistake.

Thanks for your help, though. That was awesome of you to point that out.

Good to know I am on the right track, anyway :)

This topic is closed to new replies.

Advertisement