• osg 基本几何图元


    转自:osg 基本几何图元

    //osg 基本几何图元
    //  ogs中所有加入场景中的数据都会加入到一个Group类对象中,几何图元作为一个对象由osg::Geode类来组织管理。
    //  绘制几何图元对象时,先创建一个Geometry对象,这个对象中要设置绘制所需的基本信息,图元的顶点、顶点颜色、顶点关联方式以及法线。
    
    
    #include <osgViewer/Viewer>
    #include <osgDB/ReadFile>
    #include <osg/Node>
    #include <osg/Geode>
    #include <osg/Geometry>
    
    
    int main(int argc, char** argv)
    {
        osgViewer::Viewer view;
        osg::ref_ptr<osg::Group> root = new osg::Group;
    #pragma region   几何图元模块
        osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;
        //定义顶点
        osg::ref_ptr<osg::Vec3Array> vertexArray = new osg::Vec3Array;
        geometry->setVertexArray(vertexArray);
        vertexArray->push_back(osg::Vec3(-1.f, 0.f, 1.f));
        vertexArray->push_back(osg::Vec3(1.f, 0.f, -1.f));
        vertexArray->push_back(osg::Vec3(1.f, 0.f, 1.f));
        //定义颜色数组
        osg::ref_ptr<osg::Vec4Array> colorArray = new osg::Vec4Array();
        geometry->setColorArray(colorArray);
        geometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
        colorArray->push_back(osg::Vec4(1.f, 0.f, 0.f, 1.f));
        colorArray->push_back(osg::Vec4(0.f, 1.f, 0.f, 1.f));
        colorArray->push_back(osg::Vec4(0.f, 0.f, 1.f, 1.f));
        //定义法线
        osg::ref_ptr<osg::Vec3Array> normalArray = new osg::Vec3Array();
        geometry->setNormalArray(normalArray);
        geometry->setNormalBinding(osg::Geometry::BIND_OVERALL);
        normalArray->push_back(osg::Vec3(0.f, -1.f, 0.f));
        //设置顶点关联方式
        //PrimitiveSet类,这个类松散地封装了OpenGL的绘图基元,
        //包括点(POINTS),线(LINES),多段线(LINE_STRIP),封闭线(LINE_LOOP),四边形(QUADS),多边形(POLYGON)等。
        geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON, 0, 3));
        //几何组节点
        osg::ref_ptr<osg::Geode> geo = new osg::Geode();
        geo->addDrawable(geometry);
    #pragma endregion 
        root->addChild(geo);
        view.setSceneData(root);
        //view.realize();
        view.run();
    }

    osg::PrimitiveSet::POINTS对应OpenGL中的GL_POINTS绘制单独的点
    osg::PrimitiveSet::LINES对应OpenGL中的GL_LINES绘制每两点连接的线
    osg::PrimitiveSet::LINE_STRIP对应OpenGL中的GL_LINE_STRIP绘制依次连接各点的线
    osg::PrimitiveSet::LINE_LOOP对应OpenGL中的GL_LINE_LOOP绘制依次连接各点的线,首尾相连
    osg::PrimitiveSet::POLYGON对应OpenGL中的GL_POLYGON绘制依次连接各点的多边形
    osg::PrimitiveSet::QUADS对应OpenGL中的GL_QUADS绘制依次连接每四点的四边形
    如:1、2、3、4、5、6、7、8点 绘制结果1、2、3、4组成四边形,5、6、7、8组成四边形
    osg::PrimitiveSet::QUAD_STRIP对应OpenGL中的GL_QUAD_STRIP绘制四边形
    如:1、2、3、4、5、6、7、8点 绘制结果1、2、3、4组成四边形,3、4、5、6组成四边形、5、6、7、8组成四边形
    osg::PrimitiveSet::TRIANGLES对应OpenGL中的GL_TRIANGLES绘制每三点连接的三角形
    如:1、2、3、4、5、6点 绘制结果1、2、3组成三角形,4、5、6组成三角形
    osg::PrimitiveSet::TRIANGLE_STRIP对应OpenGL中的GL_TRIANGLE_STRIP
    如:1、2、3、4、5、6点 绘制结果1、2、3组成三角形,2、3、4组成三角形,3、4、5组成三角形4、5、6组成三角形
    osg::PrimitiveSet::TRIANGLE_FAN对应OpenGL中的GL_TRIANGLE_FAN
    如:1、2、3、4、5、6点 绘制结果1、2、3组成三角形,1、3、4组成三角形,1、4、5组成三角形,1、5、6组成三角形

  • 相关阅读:
    bit byte哪些事
    各种字符集和编码详解
    常用工具大全
    表单提交的3种方式,http post的contentType
    主动发电
    Hibernate与 MyBatis的比较
    storm简介
    2013年十大免费云空间排行榜-给开发者建站用的免费云主机
    中国著名讲师全录
    iptables只允许指定ip地址访问指定端口
  • 原文地址:https://www.cnblogs.com/yaoyu126/p/6214685.html
Copyright © 2020-2023  润新知