本文整理汇总了C++中MaterialManager::setValue方法的典型用法代码示例。如果您正苦于以下问题:C++ MaterialManager::setValue方法的具体用法?C++ MaterialManager::setValue怎么用?C++ MaterialManager::setValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MaterialManager
的用法示例。
在下文中一共展示了MaterialManager::setValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseMaterialFile
void WFLoader::parseMaterialFile( const char *line )
{
/* Variables
*/
char tempStr[20] = "\0";
MaterialManager *matMngrPtr = NULL;
MaterialData matData;
float r, g, b;
/* Code
*/
matMngrPtr = MaterialManager::getInstance();
if( strlen( line ) > 0 )
{
if( line[ 0 ] == 'n' )
{
sscanf( line, "%s", tempStr );
/* Material name */
if( strcmp( tempStr, "newmtl" ) == 0 )
{
sscanf( line, "%*s %s", m_CurrentMatName );
matMngrPtr->addMaterial( m_CurrentMatName, matData );
}
}
else if( line[ 0 ] == 'N' )
{
switch( line[ 1 ] )
{
case 's':
/* Specular exponent ( shininess ) */
sscanf( line, "%*s %f", &r );
/* Even though Color4f is used, only the value of r gets
saved into the Material values */
matMngrPtr->setValue( m_CurrentMatName,
MaterialManager::MAT_SHININESS,
Color4f( r, 0.0, 0.0, 1.0 ) );
break;
}
}
/* Reflectivity information */
else if( line[ 0 ] == 'K' )
{
switch( line[ 1 ] ) //if( line[ 1 ] == 'a' )
{
case 'a':
/* Ambient */
sscanf( line, "%*s %f %f %f", &r, &g, &b );
matMngrPtr->setValue( m_CurrentMatName,
MaterialManager::MAT_AMBIENT,
Color4f( r, g, b, 1.0 ) );
break;
case 'd':
/* Diffuse */
sscanf( line, "%*s %f %f %f", &r, &g, &b );
matMngrPtr->setValue( m_CurrentMatName,
MaterialManager::MAT_DIFFUSE,
Color4f( r, g, b, 1.0 ) );
break;
case 's':
/* Specular */
sscanf( line, "%*s %f %f %f", &r, &g, &b );
matMngrPtr->setValue( m_CurrentMatName,
MaterialManager::MAT_SPECULAR,
Color4f( r, g, b, 1.0 ) );
break;
}
}
}
}