OGRE之资源读取进度条的实现

解析SampleBrowser项目的SampleBrowser.h文件,我们可以发现其中有这么一个函数:

		/*-----------------------------------------------------------------------------
		| Initialises only the browser's resources and those most commonly used
		| by samples. This way, additional special content can be initialised by
		| the samples that use them, so startup time is unaffected.
		-----------------------------------------------------------------------------*/
		virtual void loadResources()
		{
#if OGRE_PLATFORM != OGRE_PLATFORM_NACL
			mTrayMgr->showLoadingBar(1, 0);
#endif
			Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup("Popular");
#if OGRE_PLATFORM != OGRE_PLATFORM_NACL
			mTrayMgr->hideLoadingBar();
#endif
		}

其主要是基于封装了Overlay和Material的SdkTrayManager类对象mTrayMgr的调用,主要负责界面的显示和更新。在这里首先显示了进度条界面,然后加载"Popular"资源组,最后再隐藏进度条界面。

那么是如何做到资源读取的同步更新的呢?

我们查看showLoadingBar()函数,可以看到这样一句核心代码:

Ogre::ResourceGroupManager::getSingleton().addResourceGroupListener(this);

很容易可以看出,它是通过ResourceGroupManager来监听,从而实现同步更新的功能。

看到这里,我们也可以利用Ogre自带的mTrayMgr来自己动手实现一个资源读取的界面了,

需要注意的是,要实现资源加载的界面,我们需要预先初始化SdkTrays.zip资源文件(默认

位于resources.cfg中Essential资源组),然后便可以成功调用showLodingBar()函数了。

下面附一张进度条界面实现的效果图:

OGRE之资源读取进度条的实现

时间: 2024-11-03 18:52:49

OGRE之资源读取进度条的实现的相关文章

设备资源管理系统-进度条

设备资源管理系统-进度条 进度条的使用: 1.上传.下载的时候,可以使用进度条 2.文件的导入和导出的时候,可以使用进度条 3.对于大批量数据的操作的时候,可以使用进度条 4.对于数据的远程操作的时候,可以使用进度条 步骤: 1.在系统代办事宜中添加进度条 2.代码 <table id="load" width="700" border="0" align="center" bgcolor="#FAFAFA&q

实时读取进度条当前进度

最近做了一个 自动升级程序  在  下载文件和 解压缩文件时  用到了 进度条        今天先把  进度条的使用  记录下 改天有时间 把自动升级 程序  再记录进来 进度条  读取  离不开 线程        现在用两种方法 实现这个效果 一.用VS 里自带的Timer控件 int A =1;        private void timer1_Tick(object sender, EventArgs e)        {            if(A<100)        

.net网站的文件上传读取进度条和断点下载

文件上传到服务器时的进度读取 UpfileResult result = new UpfileResult(); try { //先把文件预读到内存里,同时计算上传进度 IServiceProvider provider = (IServiceProvider)HttpContext.Current; // 返回 HTTP 请求正文已被读取的部分. HttpWorkerRequest request = (HttpWorkerRequest)provider.GetService(typeof(

[Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3D游戏开发之从<魂斗罗>游戏说起(上)--目标追踪这篇文章后再写一篇<Unity3D游戏开发之从<魂斗罗>游戏说起(下)>,只是眼下博主的项目进度有些缓慢,所以想等项目稳定下来以后再和大家分享. 作为大家等待博主更新博客的回报,我们今天来说一说Unity3D中的游戏场景异步

【Android】读取sdcard卡上的全部图片而且显示,读取的过程有进度条显示

尽管以下的app还没有做到快图浏览.ES文件浏览器的水平,遇到大sdcard还是会存在读取过久.内存溢出等问题,可是基本思想是这种. 例如以下图.在sdcard卡上有4张图片, 打开app,则会吧sd卡上的全部图片读取,并显示出来.读取的过程有进度条显示. 制作步骤例如以下: 1.首先,res\values\strings.xml对字符设置例如以下,没有什么特别的. <? xml version="1.0" encoding="utf-8"?> <

前端资源预加载并展示进度条

我们经常会看到,一些站点在首次进入的时候会先显示一个进度条,等资源加载完毕后再呈现页面,大概像这样: 然后整个页面的操作就会非常流畅,因为之后没必要再等待加载资源了.尤其是在移动端,或者是页游中,这样做能避免页面出现白屏(等待加载图片),很大程度提升用户体验.那这种技术是如何实现的呢?其实非常简单,本文就来从基础细节探究一番. 为什么需要资源预加载 大多时候,我们的页面并不是一次渲染完毕的,而是随着用户的操作,不断修改DOM节点,如果你动态插入了一个图片节点,那么浏览器要马上发一个http请求,

【Android】读取sdcard卡上的所有图片并且显示,读取的过程有进度条显示

虽然下面的app还没有做到快图浏览.ES文件浏览器的水平,遇到大sdcard还是会存在读取过久.内存溢出等问题,但是基本思想是这样的. 如下图,在sdcard卡上有4张图片, 打开app,则会吧sd卡上的所有图片读取,并显示出来,读取的过程有进度条显示. 制作过程如下: 1.首先,res\values\strings.xml对字符设置如下,没有什么特别的. <?xml version="1.0" encoding="utf-8"?> <resour

TangIDE开发技巧之自定义资源加载窗口进度条

用TangIDE开发游戏的朋友都知道,你可以像编辑普通的窗口一样编辑资源加载窗口,加入各种丰富的控件和动画效果,但是进度条相对比较单调,现在进度条默认是两张小图,加载时按九宫格来绘制,如果你不想用九宫格,想用两张水平长图替代它们,那么你可以在资源加载窗口的onSystemInit事件下,重写进度条控件(UIProgressBar)的drawBgImageH方法(这里的H表示水平形状的进度条),改变图片的绘制方式. var me = this; var win = this.getWindow()

复制文件时,如何显示进度条(使用BlockRead函数读取数据,并插入application.ProcessMessages)

procedure mycopyfile(sourcef,targetf:string;i:integer); var FromF,ToF:file; NumRead,NumWritten:Integer; Buf:array[1..2048] of Char; n:integer; begin AssignFile(FromF,sourcef); Reset(FromF, 1); { Record size = 1 } AssignFile(ToF,targetf); { Open outpu