关于什么是osg渲染到纹理技术,请参考《osg渲染到纹理技术(一)》

#include <osg/Camera>
#include <osg/Group>
#include <osg/Geometry>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Texture2D>
#include <osgViewer/ViewerEventHandlers>
#include <osg/GraphicsContext>#include <iostream>using namespace std;void CreateTexture(osgViewer::Viewer *viewer){if(!viewer)return;osg::GraphicsContext::WindowingSystemInterface *wsi= osg::GraphicsContext::getWindowingSystemInterface();if(!wsi){cout<<"wsi is NULL"<<endl;return;}unsigned int width,height;wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, height);osg::ref_ptr<osg::GraphicsContext::Traits>traits=new osg::GraphicsContext::Traits;traits->x=0;traits->y=0;traits->width=width;traits->height=height;traits->windowDecoration=false;traits->doubleBuffer=true;traits->sharedContext=0;osg::ref_ptr<osg::GraphicsContext>gc=osg::GraphicsContext::createGraphicsContext(traits);if(!gc.valid()){cout<<"gc is NULL" <<endl;return;}osg::ref_ptr<osg::Camera>master=new osg::Camera;master->setGraphicsContext(gc);master->setViewport(0, 0, width, height);viewer->addSlave(master.get());cout<<height<<"  ,  "<<width<<endl;osg::ref_ptr<osg::Camera>rttCamera=new osg::Camera;rttCamera->setRenderOrder(osg::Camera::PRE_RENDER);//最先渲染rttCamera->setGraphicsContext(gc);rttCamera->setViewport(0, 0, width, height);rttCamera->addChild(osgDB::readNodeFile("ceep.ive"));viewer->addSlave(rttCamera,false);osg::ref_ptr<osg::Group>root=new osg::Group;osg::ref_ptr<osg::Geode>geode=new osg::Geode;root->addChild(geode);osg::ref_ptr<osg::Geometry>gm=new osg::Geometry;geode->addDrawable(gm);osg::ref_ptr<osg::Vec3Array>vertex=new osg::Vec3Array;vertex->push_back(osg::Vec3(-400,200,-300));vertex->push_back(osg::Vec3(400,200,-300));vertex->push_back(osg::Vec3(400,200,300));vertex->push_back(osg::Vec3(-400,200,300));gm->setVertexArray(vertex);osg::ref_ptr<osg::Vec3Array>norm=new osg::Vec3Array;norm->push_back(osg::Vec3(0,-1,0));gm->setNormalArray(norm);gm->setNormalBinding(osg::Geometry::BIND_OVERALL);osg::ref_ptr<osg::Vec2Array>coord=new osg::Vec2Array;coord->push_back(osg::Vec2(0,0));coord->push_back(osg::Vec2(1,0));coord->push_back(osg::Vec2(1,1));coord->push_back(osg::Vec2(0,1));gm->setTexCoordArray(0, coord);gm->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4));gm->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF);osg::ref_ptr<osg::Texture2D>t2d=new osg::Texture2D;
/*  osg::ref_ptr<osg::Image>image=osgDB::readImageFile("Images/blueFlowers.png");if(!image){cout<<"image is NULL"<<endl;return;}t2d->setImage(0,image);
*/t2d->setInternalFormat(GL_RGBA);
//  viewer->getCamera()->attach(osg::Camera::COLOR_BUFFER, t2d);rttCamera->attach(osg::Camera::COLOR_BUFFER,t2d);gm->getOrCreateStateSet()->setTextureAttributeAndModes(0, t2d,osg::StateAttribute::ON);root->addChild(osgDB::readNodeFile("ceep.ive"));viewer->setSceneData(root);return;}
int main(int argc, char *argv[])
{osg::ref_ptr<osgViewer::Viewer>viewer=new osgViewer::Viewer;CreateTexture(viewer);viewer->addEventHandler(new osgViewer::WindowSizeHandler);viewer->addEventHandler(new osgViewer::ScreenCaptureHandler);return viewer->run();return 0;
}

本文转自:https://blog.csdn.net/zhuyingqingfen/article/details/8241028

osg渲染到纹理技术(二)相关推荐

  1. osg渲染到纹理技术(一)

    render-to-textures(RTT)允许 开发者根据场景的一部分图像创建成一张纹理图,烘焙到场景中的某一物体上,这种技术用于创建更好看的特殊的表现形式,或者被保存用于以后的延迟着色,和多通道 ...

  2. DirectX12(D3D12)基础教程(七)——渲染到纹理、正交投影、UI渲染基础

    目录 1.前言 2.渲染到纹理 3.调试支持 4.正交投影 5.UI渲染基础 6.本章完整代码链接 1.前言 记得那是在差不多10多年前,我在工作中认识了一位好兄弟小杨.那时他刚毕业,跟我是同一所大学 ...

  3. NeHe OpenGL教程 第三十六课:从渲染到纹理

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们首先对Direct3D之中固定功能流水线中的 ...

  5. DIRECT3D基础知识 ---- 渲染与纹理 及位图,顶点缓存释义

    什么是渲染: 渲染-采集下的数字影片进行了剪接.加效果.加字幕.音乐等操作,当生成影片时需要将后加入的素材融合到影片中并压缩成为影片最终格式,这个过程就是渲染. 什么是纹理? 早期的计算机生成的3-D ...

  6. 计算机网络末端的RTT,RTT(渲染到纹理)_百度百科

    RTT(Render to Texture),即渲染到纹理.普通的图形渲染流程中,最终结果是渲染到帧缓存中,最后显示到屏幕上,然后可以把纹理继续应用到场景绘制中,比如渲染一个场景A到纹理中,在另一个场 ...

  7. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩 纹理映射技术 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  8. 「UnityShader笔记」08. 基础卡通渲染—渐变纹理

    Part1.效果图 Part2.方法简介 渐变纹理是一种可以用来实现卡通渲染效果的技术,其原理十分简单,使用光照模型计算结果,在一个一维的渐变纹理上进行采样 以半兰伯特模型为例,其表达式为 0.5 * ...

  9. OSG 渲染引擎特性与架构

    OSG 作为老牌的开源渲染引擎之一,有一定的用户群体,不少个人.企业.科研机构都在使用OSG进行开发.随着不少商业渲染引擎的开源与准门槛的降低(比如Unity3D 授权费用比较低,中小企业甚至个人都能 ...

最新文章

  1. Spring Boot 项目设置网站图标
  2. flask + celery
  3. 软件需求说明书文档格式
  4. BZOJ1001 狼抓兔子
  5. mysql savepoint是什么_Mysql中的隐式COMMIT以及Savepoints的作用
  6. C++练习 | C++从入门到放弃(基础+进阶C++ github)
  7. CSS文件添加 @charset utf-8; 可能会引起样式在IE6下失效
  8. android 代码 日历 重复事件设置,日历重复/重复事件 - 最佳存储方法
  9. mysql中使用CONCAT 实现拼接
  10. mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...
  11. 第6章 上传视频业务流程开发 6.1
  12. spss方差分析_交叉设计及SPSS多因素方差分析
  13. 台风怎么看内存颗粒_【内存篇】能否Deja Vu?海力士DJR超频测试
  14. 程序员的代码注释需要写么?
  15. 服务器被DDoS攻击,怎么破?
  16. 将串口转换成TCP连接
  17. 2022爱分析・时尚品牌数字化实践报告
  18. 2018年python就业现状_2018年Python就业形势分析 拿数据说话
  19. 第二次作业--结对作业
  20. 黄帝内经-第39篇-举痛论篇(2)

热门文章

  1. 这届清华学生太难了!C++作业难到上热搜!
  2. Verilog_寻找最高有效位的位置
  3. linux cp源码_为Linux的cp和mv命令添加进度条
  4. outlook反应慢的原因_环氧漆不固化是什么原因?固化剂的使用有关系!
  5. 动态添加html元素绑定事件,关于javascript:jQuery如何将onclick事件绑定到动态添加的HTML元素...
  6. Java中加减乘除怎样写代码,【求助】怎样实现加减乘除 代码如下
  7. python 导出大量数据到excel_怎么在python中将大量数据导出到Excel文件
  8. QT学习-核心类列表-30、QtSerialPort
  9. matlab中数组创建方法
  10. 如何成为一名受欢迎的程序员直播者?