bool COGLES2SLMaterialRenderer::initFromFiles( s32 &outMaterialTypeNr,
			const c8 *vertexShaderFile,
			const c8 *pixelShaderFile,
			bool registerMaterial )
	{
		outMaterialTypeNr = -1;
		if ( !createProgram() )
		{
			os::Printer::log( "Could not create shader program.", ELL_ERROR );
			return false;
		}

		if ( !readVertexShader( vertexShaderFile ) )
		{
			os::Printer::log( "Error reading fixed pipeline vertex shader.", ELL_ERROR );
		}

		if ( !readFragmentShader( pixelShaderFile ) )
		{
			os::Printer::log( "Error reading fixed pipeline fragment shader.", ELL_ERROR );
		}

		for ( size_t i = 0; i < EVA_COUNT; ++i )
			glBindAttribLocation( Program, i, sBuiltInVertexAttributeNames[i] );

		if ( !linkProgram() )
		{
			os::Printer::log( "Error linking fixed pipeline shader program.", ELL_ERROR );
			return false;
		}

		if ( registerMaterial )
			outMaterialTypeNr = Driver->addMaterialRenderer( this );
		return true;
	}
	bool COGLES2SLMaterialRenderer::reloadFromFiles( const c8 *vertexShaderFile,
			const c8 *pixelShaderFile )
	{
		GLsizei shaderCount;
		GLuint shaderHandles[2];
		glGetAttachedShaders( Program, 2, &shaderCount, shaderHandles );
		glDetachShader( Program, shaderHandles[0] );
		glDeleteShader( shaderHandles[0] );
		glDetachShader( Program, shaderHandles[1] );
		glDeleteShader( shaderHandles[1] );
		if ( !readVertexShader( vertexShaderFile ) )
		{
			os::Printer::log( "Error reading fixed pipeline vertex shader.", ELL_ERROR );
		}

		if ( !readFragmentShader( pixelShaderFile ) )
		{
			os::Printer::log( "Error reading fixed pipeline fragment shader.", ELL_ERROR );
		}

		if ( !linkProgram() )
		{
			os::Printer::log( "Error linking fixed pipeline shader program.", ELL_ERROR );
			return false;
		}
		else
			return true;
	}
        void COGLES2SLMaterialRenderer::initFromFiles( s32 &outMaterialTypeNr,
                                                       const c8 *vertexShaderFile,
                                                       const c8 *pixelShaderFile,
                                                       bool registerMaterial )
        {
			core::stringc msg = "load shader: ";
			msg += vertexShaderFile;
			os::Printer::log( msg.c_str(), ELL_ERROR );

            if ( !createProgram() )
            {
                os::Printer::log( "Could not create shader program.", ELL_ERROR );
            }

            if ( !readVertexShader( vertexShaderFile ) )
            {
                os::Printer::log( "Error reading fixed pipeline vertex shader.", ELL_ERROR );
            }

            if ( !readFragmentShader( pixelShaderFile ) )
            {
                os::Printer::log( "Error reading fixed pipeline fragment shader.", ELL_ERROR );
            }

            for ( size_t i = 0; i < EVA_COUNT; ++i )
                glBindAttribLocation( Program, i, sBuiltInVertexAttributeNames[i] );

            if ( !linkProgram() )
            {
            	os::Printer::log( "Why??",ELL_INFORMATION );
                os::Printer::log( "Error linking fixed pipeline shader program.", ELL_ERROR );
            }
			else os::Printer::log( "I know!" );

            if ( registerMaterial )
                outMaterialTypeNr = Driver->addMaterialRenderer( this );
			os::Printer::log("Shader loaded");
        }