直接贴代码:
#include <Windows.h>
#include <osgViewer/Viewer>
#include <osg/Group>
#include <osgDB/ReadFile>
int main(void)
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
osg::ref_ptr<osg::Group> sceneRoot = new osg::Group;
//创建几何体
osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;
osg::Vec4dArray* color = new osg::Vec4dArray;
color->push_back(osg::Vec4d(0.0, 0.0, 1.0, 1.0));
geometry->setColorArray(color);
osg::Vec3Array* vecArray = new osg::Vec3Array;
vecArray->push_back(osg::Vec3d(0.0,0.0,0.0));
vecArray->push_back(osg::Vec3d(4.0,0.0,0.0));
vecArray->push_back(osg::Vec3d(2.0, 4.0, 0.0));
vecArray->push_back(osg::Vec3d(2.0, 2.0, 4.0));
geometry->setVertexArray(vecArray);
osg::ref_ptr<osg::DrawElementsUInt> drawElemUInt = new osg::DrawElementsUInt(GL_TRIANGLE_FAN);
drawElemUInt->push_back(0);
drawElemUInt->push_back(1);
drawElemUInt->push_back(1);
drawElemUInt->push_back(2);
drawElemUInt->push_back(2);
drawElemUInt->push_back(0);
drawElemUInt->push_back(0);
drawElemUInt->push_back(1);
drawElemUInt->push_back(1);
drawElemUInt->push_back(3);
drawElemUInt->push_back(3);
drawElemUInt->push_back(0);
drawElemUInt->push_back(0);
drawElemUInt->push_back(2);
drawElemUInt->push_back(2);
drawElemUInt->push_back(3);
drawElemUInt->push_back(3);
drawElemUInt->push_back(0);
drawElemUInt->push_back(1);
drawElemUInt->push_back(3);
drawElemUInt->push_back(3);
drawElemUInt->push_back(2);
drawElemUInt->push_back(2);
drawElemUInt->push_back(1);
geometry->addPrimitiveSet(drawElemUInt);
osg::Geode* geode = new osg::Geode;
geode->addDrawable(geometry);
sceneRoot->addChild(geode);
viewer->setSceneData(sceneRoot);
viewer->realize();
return viewer->run();
}
图纸: