cocos渲染引擎分析(五)-----FBO实现多分辨率渲染

上章讲了RenderTexture的流程,然而有些需求cocos提供的并不能实现。在PC上玩游戏的时候,我们可以在设置选项里设置游戏分辨率,模糊,清晰,高清,然而cocos引擎只支持一种渲染分辨率,手机分辨率多少,就会渲染出同样分辨率的图片,这样对某些消耗大3D游戏,在低端手机就会很卡。因此,本章主要讲怎么实现基于FBO的多分辨率渲染。

多分辨率渲染的思路如下:首先创建FBO,然后渲染场景时,设置当前新FBO,并绑定当前FBO,设置视口大小(根据图像清晰度设置),完成后恢复到系统帧缓存,将FBO渲染到的纹理放大渲染到系统默认缓存上,此外,在渲染到默认系统前,可以对图像进行各种操作,如模糊,提亮等。

上章已经具体讲了RenderTexture,下面直接贴代码,RenderTexture加入下面代码:

void RenderTexture::beginFrameBuffer()
{
	glGetIntegerv(GL_FRAMEBUFFER_BINDING, &_oldFBO);
	glBindFramebuffer(GL_FRAMEBUFFER, _FBO);
	{
		Rect viewport;
		viewport.size.width = _fullviewPort.size.width;
		viewport.size.height = _fullviewPort.size.height;
		float viewPortRectWidthRatio = float(viewport.size.width) / _fullRect.size.width;
		float viewPortRectHeightRatio = float(viewport.size.height) / _fullRect.size.height;
		viewport.origin.x = (_fullRect.origin.x - _rtTextureRect.origin.x) * viewPortRectWidthRat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值