zoukankan      html  css  js  c++  java
  • [Ogre]纹理设置

    MaterialPtr material= MaterialManager::getSingleton().create("name",“ResourcesGroupName”);
    material->getTechnique(0)->getPass(0)->createTextureUnitState(”TextureFilename“);

    Ogre来绘制一个立方体

        ManualObject* cube;

        cube = mSceneMgr->createManualObject("cube");

        cube->begin("cubeMaterial");

        // 顶点

        cube->position( -100, -100, -100);   //0

        cube->colour(0.0, 0.0, 0.0);

        cube->position( 100, -100, -100);    //1

        cube->colour(1.0, 0.0, 0.0);

        cube->position( 100, -100, 100);    //2

        cube->colour(1.0, 0.0, 1.0);

        cube->position( -100, -100, 100);    //3

        cube->colour(0.0, 0.0, 1.0);

        cube->position( -100, 100, -100);    //4

        cube->colour(0.0, 1.0, 0.0);

        cube->position( 100, 100, -100);    //5

        cube->colour(1.0, 1.0, 0.0);

        cube->position( 100, 100, 100);    //6

        cube->colour(1.0, 1.0, 1.0);

        cube->position( -100, 100, 100);    //7

        cube->colour(0.0, 1.0, 1.0);

        //// 索引

        cube->triangle(0, 2, 1);

        cube->triangle(0, 2, 3);

        cube->triangle(3, 4, 0);

        cube->triangle(3, 7, 4);

        cube->triangle(4, 7, 6);

        cube->triangle(4, 6, 5);

        cube->triangle(5, 2, 1);

        cube->triangle(5, 6, 2);

        cube->triangle(0, 4, 1);

        cube->triangle(5, 1, 4);

        cube->triangle(3, 6, 7);

        cube->triangle(3, 2, 6);

        

        cube->end();

        SceneNode* sn = mSceneMgr->getRootSceneNode()->createChildSceneNode();

        sn->attachObject(cube);

    在上个立方体的基础上加上6个贴图

        // 创建六个纹理

        MaterialPtr material = MaterialManager::getSingletonPtr()->create("q", "General");

        material->getTechnique(0)->getPass(0)->createTextureUnitState("q.jpg");

        material = MaterialManager::getSingletonPtr()->create("a", "General");

        material->getTechnique(0)->getPass(0)->createTextureUnitState("a.jpg");

        material = MaterialManager::getSingletonPtr()->create("z", "General");

        material->getTechnique(0)->getPass(0)->createTextureUnitState("z.jpg");

        material = MaterialManager::getSingletonPtr()->create("x", "General");

        material->getTechnique(0)->getPass(0)->createTextureUnitState("x.jpg");

        material = MaterialManager::getSingletonPtr()->create("s", "General");

        material->getTechnique(0)->getPass(0)->createTextureUnitState("s.jpg");

        material = MaterialManager::getSingletonPtr()->create("w", "General");

        material->getTechnique(0)->getPass(0)->createTextureUnitState("w.jpg");

        ManualObject* cube;

        cube = mSceneMgr->createManualObject("cube");

        /// 下面, begin的第一个参数为要设置的材质名称

        cube->begin("q", RenderOperation::OT_TRIANGLE_FAN);

        cube->position( -100, -100, -100);   //0

        cube->textureCoord(1, 0);

        cube->position( 100, -100, -100);    //1

        cube->textureCoord(0, 0);

        cube->position( 100, -100, 100);    //2

        cube->textureCoord(0, 1);

        cube->position( -100, -100, 100);    //3

        cube->textureCoord(1, 1);

        cube->end();

        /// 左面

        cube->begin("a", RenderOperation::OT_TRIANGLE_FAN);

        cube->position( -100, -100, 100);    //3

        cube->textureCoord(1, 0);

        cube->position( -100, 100, 100);    //7

        cube->textureCoord(0, 0);

        cube->position( -100, 100, -100);    //4

        cube->textureCoord(0, 1);

        cube->position( -100, -100, -100);   //0

        cube->textureCoord(1, 1);

        cube->end();

        /// 上面

        cube->begin("z", RenderOperation::OT_TRIANGLE_FAN);

        cube->position( -100, 100, -100);    //4

        cube->textureCoord(1, 0);

        cube->position( -100, 100, 100);    //7

        cube->textureCoord(0, 0);

        cube->position( 100, 100, 100);    //6

        cube->textureCoord(0, 1);

        cube->position( 100, 100, -100);    //5

        cube->textureCoord(1, 1);

        cube->end();

                

        /// 右面

        cube->begin("x", RenderOperation::OT_TRIANGLE_FAN);

        cube->position( 100, -100, -100);    //1

        cube->textureCoord(1, 0);

        cube->position( 100, 100, -100);    //5

        cube->textureCoord(0, 0);

        cube->position( 100, 100, 100);    //6

        cube->textureCoord(0, 1);

        cube->position( 100, -100, 100);    //2

        cube->textureCoord(1, 1);

        cube->end();

        /// 前面

        cube->begin("s", RenderOperation::OT_TRIANGLE_FAN);

        cube->position( 100, -100, -100);    //1

        cube->textureCoord(1, 0);

        cube->position( -100, -100, -100);   //0

        cube->textureCoord(0, 0);

        cube->position( -100, 100, -100);    //4

        cube->textureCoord(0, 1);

        cube->position( 100, 100, -100);    //5

        cube->textureCoord(1, 1);

        cube->end();

        /// 后面

        cube->begin("w", RenderOperation::OT_TRIANGLE_FAN);

        cube->position( 100, -100, 100);    //2

        cube->textureCoord(1, 0);

        cube->position( 100, 100, 100);    //6

        cube->textureCoord(0, 0);

        cube->position( -100, 100, 100);    //7

        cube->textureCoord(0, 1);

        cube->position( -100, -100, 100);    //3

        cube->textureCoord(1, 1);

        cube->end();

  • 相关阅读:
    【来自知乎】AR技术可以通过H5实现吗?不通过APP
    太虚AR
    【ArUco】- Augmented reality library based on OpenCV
    unity MVC简易框架! MVC in Code Control
    游戏服务器框架与互联网产品的认识
    关于 boost::asio::io_service::run() 出现【句柄无效】的问题
    编译luabind-0.9.1 出现 error C2665: 'boost::operator ==' : none of the 4 overloads could convert all the argument types 的解决方案
    javascript 控制 table tr display block 显示模式时,只对第一个单元格有效
    Ogre::UINT 与 其他库的 类型冲突问题
    排序仿函数 出现 std::priority_queue::push() 的 invalid operator < 异常
  • 原文地址:https://www.cnblogs.com/lyggqm/p/5548901.html
Copyright © 2011-2022 走看看