直接使用osg渲染ifc数据,提高渲染速度。

#include "teslamanage.h"
#include <QtWidgets/QApplication>
#include <QtGui/QIcon> #include <osgViewer/Viewer> osg::ref_ptr<osg::Node> createLand(int widthParam, int heightParam, int zParam);
void loadIFCFile(osg::ref_ptr<osgViewer::Viewer> &viewer1,std::wstring &fileNmae); int main(int argc, char *argv[])
{ std::wstring fileName = L"D://ck1.ifc";
osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer; loadIFCFile(viewer1, fileName);
viewer1->setUpViewInWindow(, , , , );
return viewer1->run();
} osg::ref_ptr<osg::Node> createLand(int widthParam, int heightParam, int zParam)
{
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
osg::ref_ptr<osg::Geometry> geo = new osg::Geometry; //申请一些顶点
osg::ref_ptr<osg::Vec3Array> vers = new osg::Vec3Array;
geo->setVertexArray(vers.get());
//#if 1
// geo->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP, 0, 4));//创建一个线圈
//#else
geo->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, , ));//创建一个正方形
//#endif //设置顶点
//vers->push_back(osg::Vec3(-15, 3.0, -15));
//vers->push_back(osg::Vec3(15, 3.0, -15));
//vers->push_back(osg::Vec3(15, 3.0, 15));
//vers->push_back(osg::Vec3(-15, 3.0, 15)); vers->push_back(osg::Vec3(widthParam*(-1.0), heightParam*(-1.0), zParam*(1.0)));
vers->push_back(osg::Vec3(widthParam*(1.0), heightParam*(-1.0), zParam*(1.0)));
vers->push_back(osg::Vec3(widthParam*(1.0), heightParam*(1.0), zParam*(1.0)));
vers->push_back(osg::Vec3(widthParam*(-1.0), heightParam*(1.0), zParam*(1.0))); //申请颜色
osg::ref_ptr<osg::Vec4Array> color = new osg::Vec4Array();
color->push_back(osg::Vec4(1.0, 0.0, 0.0, 0.5));
color->push_back(osg::Vec4(0.0, 1.0, 0.0, 0.5));
color->push_back(osg::Vec4(0.0, 0.0, 1.0, 0.5));
color->push_back(osg::Vec4(1.0, 1.0, 0.0, 0.5)); //设置颜色
geo->setColorArray(color.get());
geo->setColorBinding(osg::Geometry::AttributeBinding::BIND_PER_VERTEX);//设置颜色绑定 //设置法线,正对屏幕的时候最亮
osg::ref_ptr<osg::Vec3Array> norm = new osg::Vec3Array;
geo->setNormalArray(norm);
geo->setNormalBinding(osg::Geometry::AttributeBinding::BIND_OVERALL);
norm->push_back(osg::Vec3(0.0, -1.0, 0.0)); //打开透明度
geo->getOrCreateStateSet()->setMode(GL_BLEND, osg::StateAttribute::ON); //设置线宽
osg::ref_ptr<osg::LineWidth> w = new osg::LineWidth;
w->setWidth(5.0);
geo->getOrCreateStateSet()->setAttributeAndModes(w.get(), osg::StateAttribute::ON); geode->addDrawable(geo.get()); return geode;
}

最新文章

  1. PHP面向对象讲解
  2. 查看Android系统给APP分配的最大堆栈
  3. VC++6.0在Win7以上系统上Open或Add to Project files崩溃问题 解决新办法
  4. Java 第二章 变量
  5. [转]通过PowerShell工具跨多台服务器执行SQL脚本
  6. AO总结10:MapControl控件
  7. 面试:如何找出字符串的字典序全排列的第N种
  8. HDFS 上传文件的不平衡,Balancer问题是过慢
  9. HLJU 1223: 寻找区间和 (交替推进法)
  10. mpvue小程序开发之 iconfont图标引入
  11. KendoUi 学习笔记一
  12. 屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!
  13. RabbitMQ详解(三)------RabbitMQ的五种队列
  14. M1/M2项目阶段总结
  15. 62. Unique Paths不同路径
  16. 20165228 2017-2018-2 《Java程序设计》第6周学习总结
  17. 系统日志:/var/log/messages
  18. 《Lua程序设计》第3章 表达式 学习笔记
  19. ftp上传下载工具类
  20. 12款优秀 jQuery Ajax 分页插件和教程

热门文章

  1. js实现点击按钮时显示弹框,点击按钮及弹框以外的区域时隐藏弹框
  2. sitemap怎么制作才适合蜘蛛抓取?
  3. TensorflowTensorflow细节-P158-slim的使用
  4. MySQL 是怎么保证数据一致性的(转载)
  5. MySQL 效率提高N倍的19条MySQL优化秘籍
  6. P1894 [USACO4.2]完美的牛栏The Perfect Stall
  7. 如何使用git把本地代码上传到github
  8. 升级springboot导致的业务异步回调积压问题定位
  9. 2019年7月第一周总结-RabbitMQ总结
  10. DELPHI开发LINUX的动态库