osgFBO(十三)不同分辨率颜色纹理采样

该代码示例展示了如何在qedl中处理不同分辨率的纹理,通过创建三个采样摄像机,分别设置为1倍、0.5倍和0.25倍纹理大小,并将它们的视口相应调整。每个摄像机都附加到同一场景,并将颜色缓冲区渲染到不同的纹理上。最后,通过一个pass1摄像机和着色器程序将这些纹理结合在一起显示。

在qedl中,也考虑到不同分辨率纹理,1,0.5,0.25倍

在这里插入图片描述
其实,很简单,对于同一个颜色缓冲区,设置三个采样摄像机就可以了。只是把纹理设置为1,0.5,0.25倍,采样摄像机的视口也要设置为1,0.5,0.25倍,
这也其实很好验证。

//采样纹理
osg::ref_ptr<osg::Texture2D> colorTex0 = createFloatRectangleTexture(texWidth, texHeight);
osg::ref_ptr<osg::Texture2D> colorTex1 = createFloatRectangleTexture(texWidth / 2.0, texHeight / 2.0);
osg::ref_ptr<osg::Texture2D> colorTex2 = createFloatRectangleTexture(texWidth / 4.0, texHeight / 4.0);



	sampleCamera0->setViewport(0, 0, texWidth, texHeight);//摄像机视口投影到纹理大小
	sampleCamera1->setViewport(0, 0, texWidth / 2.0, texHeight / 2.0);//摄像机视口投影到纹理大小
	sampleCamera2->setViewport(0, 0, texWidth / 4.0, texHeight / 4.0);//摄像机视口投影到纹理大小

再分别采样即可。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
可能不大明显,加个1/16的

在这里插入图片描述
OK,
完整代码如下:

#include <osgDB/ReadFile>
#include <osgUtil/Optimizer>
#include <osg/CoordinateSystemNode>

#include <osg/Switch>
#include <osg/Types>
#include <osgText/Text>

#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>

#include <osgGA/TrackballManipul

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值