face = GL_BACK;
}
- const unsigned int rm = prop->color_mask;
-
- if ( !rm ) return;
-
// Handling transparency
if ( (NamedStatus & OPENGL_NS_2NDPASSDO) == 0 )
{
}
}
+ // Obtaining reflection mode flags to update GL material properties
+ const unsigned int aReflectionMode = prop->color_mask;
+
+ // Do not update material properties in case of zero reflection mode,
+ // because GL lighting will be disabled by OpenGl_PrimitiveArray::DrawArray()
+ // anyway.
+ if ( !aReflectionMode ) return;
+
static float mAmb[4];
static float mDiff[4];
static float mSpec[4];
if ( NamedStatus & OPENGL_NS_RESMAT )
{
// Ambient component
- if( rm & OPENGL_AMBIENT_MASK )
+ if( aReflectionMode & OPENGL_AMBIENT_MASK )
{
const float *c = prop->isphysic? prop->ambcol.rgb : prop->matcol.rgb;
mAmb[3] = 1.F;
// Diffusion component
- if( rm & OPENGL_DIFFUSE_MASK )
+ if( aReflectionMode & OPENGL_DIFFUSE_MASK )
{
const float *c = prop->isphysic? prop->difcol.rgb : prop->matcol.rgb;
}
// Specular component
- if( rm & OPENGL_SPECULAR_MASK )
+ if( aReflectionMode & OPENGL_SPECULAR_MASK )
{
const float *c = prop->isphysic? prop->speccol.rgb : defspeccol;
mSpec[3] = 1.F;
// Emissive component
- if( rm & OPENGL_EMISSIVE_MASK )
+ if( aReflectionMode & OPENGL_EMISSIVE_MASK )
{
const float *c = prop->isphysic? prop->emscol.rgb : prop->matcol.rgb;
else
{
// Ambient component
- if( rm & OPENGL_AMBIENT_MASK )
+ if( aReflectionMode & OPENGL_AMBIENT_MASK )
{
const float *c = prop->isphysic? prop->ambcol.rgb : prop->matcol.rgb;
}
// Diffusion component
- if( rm & OPENGL_DIFFUSE_MASK )
+ if( aReflectionMode & OPENGL_DIFFUSE_MASK )
{
const float *c = prop->isphysic? prop->difcol.rgb : prop->matcol.rgb;
}
// Specular component
- if( rm & OPENGL_SPECULAR_MASK )
+ if( aReflectionMode & OPENGL_SPECULAR_MASK )
{
const float *c = prop->isphysic? prop->speccol.rgb : defspeccol;
}
// Emissive component
- if( rm & OPENGL_EMISSIVE_MASK )
+ if( aReflectionMode & OPENGL_EMISSIVE_MASK )
{
const float *c = prop->isphysic? prop->emscol.rgb : prop->matcol.rgb;