使用Ogre::ManualObject 绘制自定义图形

在ogre中如果需要进行自定义图形绘制可以使用ManualObject。例如绘制一个三角形的用法如下:

SceneNode* pGridNode = m_pBaseNode->createChildSceneNode("gridNode");
        //创建ManualObject
        Ogre::ManualObject* grid = m_pSceneMgr->createManualObject("gird");
        //创建材质

        //使用ogre的自带材质
        grid->begin("BaseWhite",RenderOperation::OT_TRIANGLE_LIST);

        //顶点顺序默认为逆时针可见
        
        grid->position(100.0f,0,0);                //vertex1
        grid->colour(ColourValue(1,1,1,1));

        grid->position(0,173,0);
        grid->colour(ColourValue(1,1,1,1));        //vertex2
        
        grid->position(-100.0f,0,0);
        grid->colour(ColourValue(1,1,1,1));        //vertex3

        grid->end();

        pGridNode->attachObject(grid);

 

绘制1个Quad

void EditorScene::DrawQuadIndexed()
    {
        //使用顶点缓存绘制一个quad 只需要指定4个vertex
        SceneNode* pGridNode = m_pBaseNode->createChildSceneNode("gridNode",Vector3(0,0,200));
        ManualObject* quad = m_pSceneMgr->createManualObject("quad");

        quad->begin("BaseWhite",RenderOperation::OT_TRIANGLE_LIST);

        quad->position(100,-100,0);                //vertex1
        quad->colour(ColourValue(1,1,1,1));
        quad->position(100,100,0);
        quad->colour(ColourValue(1,1,1,1));        //vertex2
        quad->position(-100.0f,100,0);
        quad->colour(ColourValue(1,1,1,1));        //vertex3
        quad->position(-100,-100,0);
        quad->colour(ColourValue(1,1,1,1));        //vertex4

        //指定顶点
        quad->triangle(0,1,2);    //triangle1
        quad->triangle(2,3,0);      //triangle2
        quad->end();
        pGridNode->attachObject(quad);

    }

 

 

其中Ogre自带三种内置材质:

DefaultSettings :默认材质
BaseWhite :基于光照的白色材质,事实上DefaultSettings的材质就是它
BaseWhiteNoLighting :基于无光照的白色材质

转载于:https://www.cnblogs.com/beeasy/p/6159612.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值