2010年12月22日
摘要: 一个大贴图 在摄像机 托远后消失了考虑的原因 各种剔除。。实际原因 贴图的纹理 必须是2的倍数最好4096转自月亮cc如果每个小窗口都单独需要一张图片,哪么会有两个问题。第一,显卡处理2的幂尺寸的图片(纹理)时效率最高,所以图片要是2的幂才行。第二,由于第一的限制,每个窗口一张图片必定导致大量的数据浪费。而且显卡在切换纹理的时候,消耗是很大的。哪么CEGUI的解决方案是用一张大的图比如512*512的图,贴上许多小图。每个小图就代表一个CEGUI窗口需要的贴图。这样就可以避免上面的麻烦了--cegui 阅读全文
posted @ 2010-12-22 14:45 minggoddess 阅读(219) 评论(0) 推荐(0) 编辑
  2010年12月18日
摘要: 做完了之前的render to texture那人又说他要的不是 这个 rtt完全透明 要的是 rtt的背景是透明的 那个人头不透明看了这个链接http://www.ogre3d.org/forums/viewtopic.php?f=2&t=15257问的google这个关键词ogre RenderTexture alpha测试成功其实本来已经很接近了 最后renderMaterial-getTechnique(0)-getPass(0)-getTextureUnitState(0)-setAlphaOperation(Ogre::LBX_MODULATE, Ogre::LBS_TEX 阅读全文
posted @ 2010-12-18 23:19 minggoddess 阅读(1343) 评论(2) 推荐(0) 编辑
摘要: scene_blend: 此渲染通路与场景中现有的内容混合的方式这个混合是将此渲染通路的输出结果与当前渲染目标的内容相结合格式1: scene_blend add|modulate|alpha_blend|colour_blend 枚举参数示例: scene_blend addadd渲染输出的颜色被叠加到场景中,用在爆炸、闪光、闪电、鬼魂等地方效果很好。相当于“scene_blend oneone”modulate另一种将渲染输出加到场景内容中,一般用于给场景着色和加深场景颜色。对于浓烟弥漫的玻璃,半透明的物体等,有很好的使用效果。相当于“scene_blend dest_colour z 阅读全文
posted @ 2010-12-18 21:39 minggoddess 阅读(1543) 评论(0) 推荐(0) 编辑
摘要: 收集的ogre 技巧如何设置透明在.material文件里,你可以设置scene_blend为add,modulate或alpha_blend.scene_blend add你可以使用JPEG 或 PNG文件为纹理图象全黑的地方为纯透明在爆炸,光晕,灯光等方面使用全白的地方是scene_blend modulate你可以使用JPEG或PNG文件为纹理, 纹理会根据背景进行想乘,通常它的颜色比图片要暗. 纹理黑的部分为透明.sene_blend alpha_blend你可以使用PNG图象文件为纹理,要在PNG文件里设置透明,你需要用Photoshop来处理它通过把背景层删除,并 在其他层使用橡皮 阅读全文
posted @ 2010-12-18 21:27 minggoddess 阅读(2544) 评论(1) 推荐(1) 编辑
摘要: ogre Dome上有动态纹理的效果演示,这里讲的不是移动或旋转纹理坐标产生的纹理动态效果,而是由几张图片更换显示产生的动画效果,这种效果在2d中指的是帧动画。首先要准备好一组图片,如animotion1.jpg, animotion2.jpg, animotion3.jpg, animotion4.jpg. ogre的材质的Texture-Uint中有anim_texture这个属性(可以参考ogre中文帮助手册),它是专门为作帧动画准备的。接着定义一个简单的overlay, 以下是我的简单定义:howlet/BigMapOverlay{ zorder 0 container Panel ( 阅读全文
posted @ 2010-12-18 19:58 minggoddess 阅读(1068) 评论(0) 推荐(0) 编辑
  2010年12月17日
摘要: 这个问题其实就是 rtt+texture设置透明代码如下代码代码终于会插入代码了 不用一点点 回车了 。。这段内容比较多 除了 取出rtt 设置 透明 还有些别的内容这段内容 是单独设置纹理透明的: 阅读全文
posted @ 2010-12-17 17:37 minggoddess 阅读(2773) 评论(1) 推荐(0) 编辑
摘要: OpenGL显示列表的设计能优化程序运行性能,尤其是网络性能。它被设计成命令高速缓存,而不是动态数据库缓存。也就是说,一旦建立了显示列表,就不能修改它。因为若显示列表可以被修改,则显示列表的搜索、内存管理的执行等开销会降低性能。  采用显示列表方式绘图一般要比瞬时方式快,尤其是显示列表方式可以大量地提高网络性能,即当通过网络发出绘图命令时,由于显示列表驻留在服务器中,因而使网络的负担减轻到最小。另外,在单用户的机器上,显示列表同样可以提高效率。因为一旦显示列表被处理成适合于图形硬件的格式,则不同的OpenGL实现对命令的优化程度也不同。例如旋转矩阵函数glRotate*(),若将它置于显示列表 阅读全文
posted @ 2010-12-17 00:10 minggoddess 阅读(375) 评论(0) 推荐(0) 编辑
  2010年12月15日
摘要: a*quaternion 四元数quaternion 从(弧度m,轴v)获得 表示将a绕轴v旋转m得到的。。。quaternion *vector3   若vector3是个表示位移的向量 pos+=quaternion *vector3 quaternion表示朝向orientation    表示 vector3这个位移是被挪到朝向上了 这个v3本身是一个经过坐标原点的向量通过四元数旋转一个Vector quaternion*vector// 通过四元数旋转一个vector//当Vector表示一个位移时,. // 结果表示,将vector转化为相对于mOrientation方向上的 阅读全文
posted @ 2010-12-15 23:45 minggoddess 阅读(2996) 评论(0) 推荐(0) 编辑
摘要: 世界空间,朝世界原点的朝向移动d ,换到mPosition的所在父空间只需要旋转一定角度,这个角度应该是世界原点方向和父节点的方向的夹角,正好是父节点世界绝对角度再取反.(为什么要取反,2个四元数相乘是不能交换的,因为世界节点和父节点夹角 != 父节点和世界节点夹角,正好相反) mPosition += (mParent-_getDerivedOrientation().Inverse() * d) / mParent-_getDerivedScale();根据这段话 我想 由A 到B的用了 四元数Orientation 由B到A的话就应该是Orientation.Inverse()我知道 阅读全文
posted @ 2010-12-15 23:35 minggoddess 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 把矩阵转成四元数用于计算失去其原有的几何意义四元数统一表示了复数和矢量 可用来计算 平移,缩放旋转当四元数是一个单位四元数时(意味着n为单位向量)它的倒数等于他的共轭,那么四元数与旋转到底有什么关系?我以前一直认为轴、角的描述就是四元数,如果是那样其与旋转的关系也不言而喻,但并不是这么简单,轴、角描述到四元数的转化:w = cos(theta/2)x = ax * sin(theta/2)y = ay * sin(theta/2)z = az * sin(theta/2)其中(ax,ay,az)表示轴的矢量,theta表示绕此轴的旋转角度,为什么是这样?和轴、角描述到底有什么不同?这是因为轴角 阅读全文
posted @ 2010-12-15 21:56 minggoddess 阅读(483) 评论(0) 推荐(0) 编辑