osg入门系列10-以索引方式的几何体绘制
来源:互联网 发布:泰拉瑞亚作弊软件 编辑:程序博客网 时间:2024/05/01 01:58
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Group>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osgUtil/Optimizer>
#include <iostream>
using namespace std;
osg::ref_ptr<osg::Node> createQuad()
{
osg::ref_ptr<osg::Geode> geode = new osg::Geode();
osg::ref_ptr<osg::Geometry> geom = new osg::Geometry();
osg::ref_ptr<osg::Vec3Array> v= new osg::Vec3Array();
v->push_back(osg::Vec3(0.0f, 0.0f, 0.0f));
v->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
v->push_back(osg::Vec3(1.0f, 0.0f, 1.0f));
v->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));
v->push_back(osg::Vec3(0.0f,-1.0f, 0.0f));
geom->setVertexArray(v.get());
osg::ref_ptr<osg::DrawElementsUInt> quad =
new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
quad->push_back(0);
quad->push_back(1);
quad->push_back(2);
quad->push_back(3);
geom->addPrimitiveSet(quad.get());
osg::ref_ptr<osg::DrawElementsUInt> triangle =
new osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, 0);
triangle->push_back(4);
triangle->push_back(0);
triangle->push_back(3);
geom->addPrimitiveSet(triangle.get());
osg::ref_ptr<osg::Vec4Array> vc = new osg::Vec4Array();
vc->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f));
vc->push_back(osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f));
vc->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f));
vc->push_back(osg::Vec4(1.0f, 1.0f, 0.0f, 1.0f));
osg::TemplateIndexArray<unsigned int, osg::Array::UIntArrayType, 4, 4>* colorIndex =
new osg::TemplateIndexArray<unsigned int , osg::Array::UIntArrayType, 4, 4>();
colorIndex->push_back(0);
colorIndex->push_back(1);
colorIndex->push_back(2);
colorIndex->push_back(3);
colorIndex->push_back(2);
geom->setColorArray(vc.get());
geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
osg::ref_ptr<osg::Vec3Array> nc = new osg::Vec3Array();
nc->push_back(osg::Vec3(0.0f, -1.0f, 0.0f));
geom->setNormalArray(nc.get());
geom->setNormalBinding(osg::Geometry::BIND_OVERALL);
geode->addDrawable(geom.get());
return geode.get();
}
int main()
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
osg::ref_ptr<osg::Group> root = new osg::Group();
root->addChild(createQuad());
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
return 0;
}
#include <osg/Node>
#include <osg/Geode>
#include <osg/Group>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osgUtil/Optimizer>
#include <iostream>
using namespace std;
osg::ref_ptr<osg::Node> createQuad()
{
osg::ref_ptr<osg::Geode> geode = new osg::Geode();
osg::ref_ptr<osg::Geometry> geom = new osg::Geometry();
osg::ref_ptr<osg::Vec3Array> v= new osg::Vec3Array();
v->push_back(osg::Vec3(0.0f, 0.0f, 0.0f));
v->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
v->push_back(osg::Vec3(1.0f, 0.0f, 1.0f));
v->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));
v->push_back(osg::Vec3(0.0f,-1.0f, 0.0f));
geom->setVertexArray(v.get());
osg::ref_ptr<osg::DrawElementsUInt> quad =
new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
quad->push_back(0);
quad->push_back(1);
quad->push_back(2);
quad->push_back(3);
geom->addPrimitiveSet(quad.get());
osg::ref_ptr<osg::DrawElementsUInt> triangle =
new osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, 0);
triangle->push_back(4);
triangle->push_back(0);
triangle->push_back(3);
geom->addPrimitiveSet(triangle.get());
osg::ref_ptr<osg::Vec4Array> vc = new osg::Vec4Array();
vc->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f));
vc->push_back(osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f));
vc->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f));
vc->push_back(osg::Vec4(1.0f, 1.0f, 0.0f, 1.0f));
osg::TemplateIndexArray<unsigned int, osg::Array::UIntArrayType, 4, 4>* colorIndex =
new osg::TemplateIndexArray<unsigned int , osg::Array::UIntArrayType, 4, 4>();
colorIndex->push_back(0);
colorIndex->push_back(1);
colorIndex->push_back(2);
colorIndex->push_back(3);
colorIndex->push_back(2);
geom->setColorArray(vc.get());
geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
osg::ref_ptr<osg::Vec3Array> nc = new osg::Vec3Array();
nc->push_back(osg::Vec3(0.0f, -1.0f, 0.0f));
geom->setNormalArray(nc.get());
geom->setNormalBinding(osg::Geometry::BIND_OVERALL);
geode->addDrawable(geom.get());
return geode.get();
}
int main()
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
osg::ref_ptr<osg::Group> root = new osg::Group();
root->addChild(createQuad());
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
return 0;
}
---
0 0
- osg入门系列10-以索引方式的几何体绘制
- osg入门系列11- 预订义几何体
- osg入门系列13-几何体简化
- OSG 学习第二天:几何体的绘制
- osg中几何体绘制笔记(一)
- OSG学习:基本几何体绘制示例
- osg几何体的图元的遍历
- OSG绘制几何体学习总结(超全)
- OSG绘制几何体学习总结(超全)
- opengl绘制几何体的函数
- 绘制带颜色的几何体
- OSG学习:使用OSG中预定义的几何体
- OSG简化几何体显示
- OSG基本几何体的透明效果和网格模型
- osg入门系列1 - 初识osg
- OSG中的索引数组绘制图元
- OSG MFC入门基础系列
- osg入门系列2-公告板的使用
- iOS7导航栏遮盖问题的解决
- Gson使用方法之Tree Representation
- (leetcode) Best Time to Buy and Sell Stock II
- Linux下查看UUID方法以及修改
- 32位WINXP+VS2010编译vlc-1.1.5
- osg入门系列10-以索引方式的几何体绘制
- GState
- XBMC源代码分析 6:视频播放器(dvdplayer)-文件头(以ffmpeg为例)
- 从Java中访问native service的问题
- constvar: 一些图
- Android 定时器实现的几种方式和removeCallbacks失效问题详解
- 阿里巴巴上市,筹资高达1500亿人民币,阿里巴巴要这么多钱来干什么
- ListIterator
- H.264分析器