生成osg图像并保存

#include "osgViewer/Viewer"

#include "osgDB/WriteFile"

#include "osgDB/ReadFile"

#include "osgGA/TrackballManipulator"

#include <osgViewer/GraphicsWindow>

 

void main()

{

    //

    //得到屏幕分辨率

    osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();

    unsigned int width, height;

    wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, height);

    ///

    osgViewer::Viewer v;

    v.setSceneData(osgDB::readNodeFile("axes.osg"));

    v.setCameraManipulator(new osgGA::TrackballManipulator());

    v.frame();

    osg::ref_ptr<osg::Image> image = new osg::Image;

    image->readPixels(0,0,width,height, GL_RGB,GL_UNSIGNED_BYTE);

    osgDB::writeImageFile(*image,"abc.jpg");

}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhuqinglu/archive/2008/03/10/2162580.aspx

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用OpenSceneGraph(OSG)库中的Geometry类生成图像通常需要以下步骤: 1. 创建一个osg::Geode对象,将所有几何图形添加到其中。 2. 创建一个osg::Group对象,将osg::Geode对象添加为其子节点。 3. 创建一个osgViewer::Viewer对象,并将osg::Group对象设置为场景数据。 4. 使用osgDB::writeImageFile函数将场景渲染到图像文件中。 以下是一个简单的示例代码,演示如何使用OSG库中的Geometry类生成一张图像: ```cpp #include <osg/Geometry> #include <osg/Geode> #include <osg/Group> #include <osgViewer/Viewer> #include <osgDB/WriteFile> int main() { // 创建一个三角形几何图形 osg::ref_ptr<osg::Geometry> triangle = new osg::Geometry(); osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(); vertices->push_back(osg::Vec3(-1.0f, 0.0f, 0.0f)); vertices->push_back(osg::Vec3(0.0f, 1.0f, 0.0f)); vertices->push_back(osg::Vec3(1.0f, 0.0f, 0.0f)); triangle->setVertexArray(vertices.get()); osg::ref_ptr<osg::DrawElementsUInt> triangleIndices = new osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, 0); triangleIndices->push_back(0); triangleIndices->push_back(1); triangleIndices->push_back(2); triangle->addPrimitiveSet(triangleIndices.get()); // 将三角形几何图形添加到osg::Geode对象中 osg::ref_ptr<osg::Geode> geode = new osg::Geode(); geode->addDrawable(triangle.get()); // 创建一个osg::Group对象,并将osg::Geode对象添加为其子节点 osg::ref_ptr<osg::Group> root = new osg::Group(); root->addChild(geode.get()); // 创建一个osgViewer::Viewer对象,并将osg::Group对象设置为场景数据 osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer(); viewer->setSceneData(root.get()); // 渲染场景,并将场景渲染到图像文件中 viewer->frame(); osgDB::writeImageFile(*(viewer->getCamera()->captureRenderToImage()), "output.png", osgDB::Registry::instance()->getWriteFileOptions()); return 0; } ``` 运行代码后,将在程序所在目录下生成名为“output.png”的图像文件,其中包含了一个三角形几何图形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值