osg多pass及texture信息回写image

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、设置Texture的时候绑定Image

创建image

auto image = new osg::Image;
image->allocateImage(viewport->width(), viewport->height(), 1, GL_RGBA, GL_UNSIGNED_BYTE);

绑定texture

auto texture = new osg::TextureRectangle;
texture->setImage(image);

二、osg::Camera::DrawCallback或者osg::GraphicsOperation

基本实现是继承这两个类,重写其下面这个函数

virtual void operator () 

区别是执行时机不同,osg::Camera::DrawCallback会在绑定相机执行完成之后执行,osg::GraphicsOperation会在所有相机执行完之后执行,可以在其中借助osg上下文进行opengl函数处理。

三、通过绑定的Image获取Texture信息

osg::GraphicsOperation的时候,如下获取(context为函数参数):

image->readImageFromCurrentTexture(context->getState()->getContextID(),0);

osg::Camera::DrawCallback的时候,如下获取(renderInfo为函数参数):

image->readImageFromCurrentTexture(renderInfo->getState()->getContextID(),0);

注意:readImageFromCurrentTexture这个函数需要注意第三个参数是有默认值的,如果是GL_FLOAT进行存储的,要回写的时候,第三个参数要填入GL_FLOAT,否则Image的_dataType会被更新为GL_UNSIGNED_BYTE,导致getColor函数取值出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值