Ejemplo n.º 1
0
event_function(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e)
{

	switch (e) {
		case VCL_EVENT_LOAD: return event_load(ctx, priv);
		case VCL_EVENT_COLD: return event_cold(ctx);
		case VCL_EVENT_WARM: return event_warm(ctx);
		default: return (0);
	}
}
Ejemplo n.º 2
0
//--- wangjian added ---//
// 异步加载
void ATOM_Decal::AddStreamingTask()
{
	// 创建材质
	if( !_material )
		_material = ATOM_MaterialManager::createMaterialFromCore (ATOM_GetRenderDevice(), "/materials/builtin/decal.mat");
	
	// 加载纹理
	if( !_texture )
	{
		// 同步或者异步加载纹理
		bool bMT =	( ATOM_AsyncLoader::IsRun() );// && ( _load_priority != ATOM_LoadPriority_IMMEDIATE );

		_texture = ATOM_CreateTextureResource ( _textureFileName.c_str(), 
												ATOM_PIXEL_FORMAT_UNKNOWN, 
												bMT ? _load_priority : ATOM_LoadPriority_IMMEDIATE );

		// 异步加载
		if( bMT )
		{
			if( _texture && !_texture->getAsyncLoader()->IsLoadAllFinished() )
			{
				// 加载优先级
				int loadPri = _load_priority == ATOM_LoadPriority_IMMEDIATE ?	_texture->getAsyncLoader()->priority :
																				_load_priority;

				ATOM_LOADRequest_Event * event_load( ATOM_NEW(	ATOM_LOADRequest_Event,
																_textureFileName.c_str(),
																this,
																loadPri,
																_texture->getAsyncLoader(),
																ATOM_LOADRequest_Event::FLAG_SHOW ) );
			}
			else
				_load_flag = LOAD_ALLFINISHED;
		}
		else
			_load_flag = LOAD_ALLFINISHED;
	}
}