[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();
[Ogre]纹理设置的更多相关文章
- Unity 用户手册用户指南二维纹理 (Texture 2D)
http://www.58player.com/blog-2327-953.html 二维纹理 (Texture 2D) 纹理 (Textures) 使您的 网格 (Meshes).粒子 (Parti ...
- Unity3d之Shader编程:子着色器、通道与标签的写法 & 纹理混合
一.子着色器 Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器. 我们知道,子着色器 ...
- Stage3D学习笔记(五):通过矩阵操作纹理
虽然我们上一节已经实现了正交矩阵的显示,但是可以明显的感觉到要调整显示纹理的坐标和尺寸是相当复杂的,需要对每个顶点进行操作,如果还要加上注册点和旋转的话,用上一节的方法来做是会让人发疯的! 所以我们距 ...
- cocos2d-x 添加纹理自动回收机制
转自:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019375.html 1.不是一个完整的模块,所以不提供完整代码,只提供思路和核心代码. ...
- 制作UI纹理(UI Texture)
什么情况下使用UI Texture UI Texture的功能是在屏幕上显示一张图片,在这一点上它和Sprite有着相似的功能,但是UI Texture会消耗单独的DrawCall去渲染,并会单独加载 ...
- DirectX11--深入理解与使用2D纹理资源
前言 写教程到现在,我发现有关纹理资源的一些解说和应用都写的太过分散,导致连我自己找起来都不方便.现在决定把这部分的内容整合起来,尽可能做到一篇搞定所有2D纹理相关的内容,其中包括: DDSTextu ...
- 关于Cocos2d-x节点和精灵节点的坐标、位置以及大小的设置
1.cocos2d-X中的坐标(0,0),就是运行框的左下角位置,所以运行框看起来就是一个第一象限. 2.节点的锚点就是我们setPosition所设定的位置,默认锚点是在节点的中心,也就是setPo ...
- DXVA2解码数据用texture纹理渲染
FFmpeg DXVA2解码得到的数据使用surface来承载的,surface限制很多,如果能用纹理来渲染的话,那我们就可以充分开发D3D,比如可以用坐标变换来实现电子放大的功能,还可以用坐标变换来 ...
- 二维纹理 Texture 2D
Textures bring your Meshes, Particles, and interfaces to life! They are image or movie files that yo ...
随机推荐
- Baseline管理
1.创建基线 SQL> exec dbms_workload_repository.create_baseline(start_snap_id=>,end_snap_id=>,bas ...
- MongoDB(一):安装
安装 从度娘上搜索MongoDB,找到官网地址:https://www.mongodb.com 找到下载中心地址:https://www.mongodb.com/download-center 我下载 ...
- j2ee servlet listener
JSP/Servlet 中的事件处理写过AWT或Swing程序的人一定对桌面程序的事件处理机制印象深刻:通过实现Listener接口的类可以在特定事件(Event)发生时,呼叫特定的方法来对事件进行响 ...
- IOS 加载Xib 后 如何 动态修改xib中的控件frame
看看xib里view是不是设置了自动布局 use auto layout.取消掉就可以了.
- Lintcode: Rotate String
Given a string and an offset, rotate string by offset. (rotate from left to right) Example Given &qu ...
- 单片机项目开发中的Muliple Inialliaztion和Mutilple Definition解决:在.c中定义全局变量或者用extern加以声明
c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义,会给编程带来很大的麻烦,为了使大家少走弯路,特祥细的说明一下. 对于比较小的程序,一般只有一个c文件和一个头文件 ...
- malloc心得
使用malloc时,要有一种在内存中随机分配一块内存的思想,然后再把分配好的内存的首地址返回来.
- 一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号
<?php/** * [猴子选大王] * @param [type] $m [猴子数] * @param [type] $n [出局次数] * @return [type] [desc ...
- AngularJS 全局scope与Isolate scope通信
在项目开发时,全局scope 和 directive本地scope使用范围不够清晰,全局scope与directive本地scope通信掌握的不够透彻,这里对全局scope 和 directive本地 ...
- sql 把一列的数据按逗号分隔转换成多行
ALTER proc [dbo].[ModifyWkCashAccountNo]asbeginset xact_abort onbegin transactiondeclare @errors int ...