osg-05-基本几何图元-内置几何类型

在这里插入图片描述

#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Shape>
#include <osg/ShapeDrawable>
#include <osgViewer/ViewerEventHandlers>

//内置几何类型

osg::ref_ptr<osg::Node> CreateShape();

int main()
{
	osgViewer::Viewer viewer;
	osg::Group* root = new osg::Group();
	root->addChild(CreateShape().get());
	viewer.setSceneData(root);

	// 窗口大小变化事件 F
	viewer.addEventHandler(new osgViewer::WindowSizeHandler);

	viewer.realize();
	return viewer.run();
}

osg::ref_ptr<osg::Node> CreateShape()
{
	osg::ref_ptr<osg::Geode> geode = new osg::Geode;
	float radius = 0.08f;
	float height = 0.1f;

	//指明精细度的类
	osg::TessellationHints* hints = new osg::TessellationHints;
	hints->setDetailRatio(0.5f); //模型的粗细度0-1

	/*
		申请球结点:规定圆心、半径、精细度;
		盒子结点:规定盒心、长、精细度;
		圆锥结点:规定底面圆心、半径、高度、精细度;
		圆柱结点:规定底面圆心、半径、高度、精细度;
		胶囊体结点:规定半径、圆心、高度、精细度。
	*/
	geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(0.0f, 0.0f, 0.0f), radius), hints));
	geode->addDrawable(new osg::ShapeDrawable(new osg::Box(osg::Vec3(0.2f, 0.0f, 0.0f),0.16,0.08,0.16), hints));
	geode->addDrawable(new osg::ShapeDrawable(new osg::Cone(osg::Vec3(0.4f, 0.0f, 0.0f), radius, height*2), hints));
	geode->addDrawable(new osg::ShapeDrawable(new osg::Cylinder(osg::Vec3(0.6f, 0.0f, 0.0f), radius, height*2), hints));
	geode->addDrawable(new osg::ShapeDrawable(new osg::Capsule(osg::Vec3(0.8f, 0.0f, 0.0f), radius, height*2), hints));


	return geode.get();
}

运行结果

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值