首页 > 其他 > 详细

绘制五角星

时间:2021-08-29 22:00:24      阅读:28      评论:0      收藏:0      [点我收藏+]
#include <Windows.h>
#include <osg\Node>
#include <osg\Group>
#include <osg\Geometry>
#include <osgViewer/Viewer>

osg::Vec3Array* createVertexArray()
{
	osg::ref_ptr<osg::Vec3Array> vertex = new osg::Vec3Array();
	int n = 5;
	double step = 360 / n;
	for (int i = 0; i <= n; ++i)
	{
		double x = sin(osg::DegreesToRadians(i*step));
		double y = cos(osg::DegreesToRadians(i*step));
		double z = 0.0;
		vertex->push_back(osg::Vec3(x, y, z));
	}
	return vertex.release();
}

int main()
{
	osgViewer::Viewer viewer;

	osg::ref_ptr<osg::Group> group = new osg::Group();
	viewer.setSceneData(group);

	osg::ref_ptr<osg::Geode> geode = new osg::Geode();
	geode->getOrCreateStateSet()->setAttributeAndModes(new osg::PolygonMode(osg::PolygonMode::FRONT_AND_BACK, osg::PolygonMode::LINE));
	osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry();

	//顶点
	osg::ref_ptr<osg::Vec3Array> vertex = createVertexArray();
	geometry->setVertexArray(vertex);

	//颜色
	osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array();
	colors->push_back(osg::Vec4(1.0, 1.0, 1.0, 1.0));
	geometry->setColorArray(colors, osg::Array::BIND_OVERALL);

	//图元装配
	osg::ref_ptr<osg::DrawElementsUInt> draw_elements = new osg::DrawElementsUInt(osg::PrimitiveSet::LINE_LOOP, 0);	
	draw_elements->addElement(0);
	draw_elements->addElement(2);
	draw_elements->addElement(4);
	draw_elements->addElement(1);
	draw_elements->addElement(3);
	geometry->addPrimitiveSet(draw_elements);

	geode->addDrawable(geometry);
	group->addChild(geode);

	viewer.setUpViewInWindow(100, 100, 500, 400);
	return viewer.run();
}

技术分享图片

绘制五角星

原文:https://www.cnblogs.com/shiguoliang/p/15195466.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!