背锅的项目出现的问题及更改方法

前几年背锅的那个项目,打击了我的信心,

为啥那么卡,确实是架构的问题。当时开了线程池没错,但是没有异步加载资源,都在渲染的那帧去加载的。

通过我这两年对引擎架构的整合,直到上周解决了这个问题。

有几点,

第一,渲染要多线程渲染,当时的那个渲染是在主线程渲染。多线程渲染时,需要个事件。将  窗口与OpenGL 上下文绑定后,setevent ,在主线程等待这个事件,确保主线程继续执行。

第二,加载瓦片数据时异步加载,开四个线程,用信号量。通过瓦片名称生成纹理,要求的瓦片名称是生产者,生成纹理数据是消费者。这里需要一个监控者模式,在获取要求的瓦片数据时加锁,写入要更新的数据数组中,在渲染时,也要加锁,
第三,预处理时,用四叉树或八叉树处理瓦片及其他模型。

第四,在cpu 端,要用摄像机六棱锥过滤掉不在视野内的物体,可以通过物体包围盒与六棱锥相交判断,不能只等着osg去过滤。
第五,对于频繁访问内存的数据,不要用 STL ,而是直接开缓存,最好内存池。

 

 


以前的项目,架构师已经脱离代码很多年,所以掌握不了细节了,所以这个锅我背了。需要细抠,做个好的架构不只是加载个动态链接库,懂几个设计模式那么简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值