osgMulitiplerendertargets sample 中fbo使用【HTC VIVE开发中应用】
osgmultiplerendertargets.cpp
......................................
// now create the camera to do the multiple render to texture
{
osg::Camera* camera = new osg::Camera;
// set up the background color and clear mask.
camera->setClearColor(osg::Vec4(0.1f,0.1f,0.3f,1.0f));
camera->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// the camera is going to look at our input quad
camera->setProjectionMatrix(osg::Matrix::ortho2D(0,1,0,1));
camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
camera->setViewMatrix(osg::Matrix::identity());
// set viewport
camera->setViewport(0, 0, tex_width, tex_height);
// set the camera to render before the main camera.
camera->setRenderOrder(osg::Camera::PRE_RENDER);
// tell the camera to use OpenGL frame buffer objects
camera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);
// attach the textures to use
for (int i=0; i<NUM_TEXTURES; i++) {
if (useMultiSample)// 使用多重渲染方式消除锯齿现象
camera->attach(osg::Camera::BufferComponent(osg::Camera::COLOR_BUFFER0+i), textureRect[i], 0, 0, false, 4, 4);
else
camera->attach(osg::Camera::BufferComponent(osg::Camera::COLOR_BUFFER0+i), textureRect[i]);
}
// we can also read back any of the targets as an image, modify this image and push it back
// 绑定一张image获取fbo渲染结果
if (useImage) {
// which texture to get the image from
const int tex_to_get = 0;
osg::Image* image = new osg::Image;
if (useHDR) {
image->allocateImage(tex_width, tex_height, 1, GL_RGBA, GL_FLOAT);
} else {
image->allocateImage(tex_width, tex_height, 1, GL_RGBA, GL_UNSIGNED_BYTE);
}
// attach the image so its copied on each frame.
camera->attach(osg::Camera::BufferComponent(osg::Camera::COLOR_BUFFER0 + tex_to_get), image);
camera->setPostDrawCallback(new MyCameraPostDrawCallback(image));
// push back the image to the texture
textureRect[tex_to_get]->setImage(0, image);
}
// add the subgraph to render
camera->addChild(cam_subgraph);
parent->addChild(camera);
}
最新文章
- MongoDB 初见指南
- python(19)编码问题
- luigi学习9--执行模型
- HTTP 协议简介
- checkbox 实现单选效果(html)
- 从点击到呈现 — 详解一次HTTP请求
- shell脚本交互:expect学习笔记及实例详解
- Objective-C中整数与字符串的相互转换
- Tomcat基本配置
- java虚拟机——垃圾回收机制
- matlab sign函数用法及实例
- 推荐一个spring cloud 学习路线,绝对合理化
- RSA 加解密 秘钥对说明
- canvas 实现微信小游戏
- SSM(Spring MVC +Spring+Mybatis)整合——maven工程
- 最短路径Dijkstra matlab
- 修改cnblogs日历控件CSS
- NavigationViewController页面间通信及传值
- C - 前m大的数 (结构体)
- java.util.ConcurrentModificationException: null