Ehsan Kamrani
06-22-2010, 02:34 PM
I have declared a uniform variable in both vertex and fragment shaders:
uniform int numLights;
I use the following code in my application to send the number of numLights to the shader:
glUniform1i(glGetUniformLocation( g_render.m_shaderProgram , "numLights"), 1 );
when I use numLights in a for loop in my fragment shader,It seems that I get an endless loop:
for( int i = 0; i < numLights; i++ )
{
...
}
even if I use the following code before the for loop:
int numberOfLights = numLights;
if( numberOfLights > 1 )
numberOfLights = 1;
for( int i = 0; i < numberOfLights ; i++ )
{
...
}
however if I define the value of for loop inside the fragment shader, I don't get any logical bugs:
int numberOfLights = 1;
for( int i = 0; i < numberOfLights ; i++ )
{
...
}
My graphics card is Geforce 9600 and I have downloaded and installed the latest driver.
uniform int numLights;
I use the following code in my application to send the number of numLights to the shader:
glUniform1i(glGetUniformLocation( g_render.m_shaderProgram , "numLights"), 1 );
when I use numLights in a for loop in my fragment shader,It seems that I get an endless loop:
for( int i = 0; i < numLights; i++ )
{
...
}
even if I use the following code before the for loop:
int numberOfLights = numLights;
if( numberOfLights > 1 )
numberOfLights = 1;
for( int i = 0; i < numberOfLights ; i++ )
{
...
}
however if I define the value of for loop inside the fragment shader, I don't get any logical bugs:
int numberOfLights = 1;
for( int i = 0; i < numberOfLights ; i++ )
{
...
}
My graphics card is Geforce 9600 and I have downloaded and installed the latest driver.