Ejemplo n.º 1
0
void RenderPass::Parse( pugi::xml_node Node )
{
	//parasowanie pass
	for( const auto &Child : Node.children() )
	{
		if( !strcmp( Child.name(), "shader" ) )
		{
			//wyszukaj shader i jak go nie ma ³aduj z pliku itp
			std::string ShaderName = Child.attribute( "name" ).as_string();
			cProgramShader *Shader = cShaderManager::GetInstance()->GetProgram( ShaderName );
			if( Shader == nullptr )
			{
				Shader = cShaderManager::GetInstance()->Parse( Child );
			}
			pShader = Shader;
		}else if( !strcmp( Child.name(), "sampler" ) )
		{
			//sampler z tekstury
			std::string TextureName = Child.attribute( "texture").as_string();
			uint Sampler = Child.attribute( "sampler" ).as_uint();
			TEXTUREFILTER TfMin = CheckTextureFilter( Child.attribute( "min_filter" ).as_string() );
			TEXTUREFILTER TfMag = CheckTextureFilter( Child.attribute( "mag_filter" ).as_string( ) );
			WRAPMODE WmS = CheckWrapMode( Child.attribute( "wrap_s" ).as_string() );
			WRAPMODE WmT = CheckWrapMode( Child.attribute( "wrap_t" ).as_string() );			

			TextureManager *TexMgr = TextureManager::GetSingletonPtr();
			Texture2D *Tex = TexMgr->GetTexturePtr( TextureName );
			if( Tex == nullptr )
			{
				std::cerr << "blad";
			}
			TextureSampler *TexSampler = new TextureSampler( Tex, Sampler, TfMin, TfMag, WmS, WmT );
			TexSampler->Update();
			mTextures.push_back( TexSampler );
		}
	}

}