随笔- 191
文章- 0
评论- 35
阅读-
21万
12 2010 档案
ogre缓冲及锁
摘要:2009-12-18 17:32硬件缓冲区和缓冲锁使用经验 1:因为最快最优秀的缓冲自然是通过 HBU_STATIC_WRITE_ONLY类型创建,不创建备份缓存,并且仅进行一次HBL_DISCARD的锁操作永不再额外处理的缓冲。 2:当我们需要频繁更新的缓冲,可以用HBU_DYNAMIC_WRITE_ONLY来创建,不创建备份缓存,之后使用HBL_DISCARD加锁,若不想全部更新,则使用HBL_NO_OVERWRITE进行锁操作。 3:若我们必须从缓冲区中读取数据的话,那么我们可以创建一个备份缓冲,用HBL_READ_ONLY将其锁住。可能的话,尽量声明缓冲区为静态的。 4:在我们对顶点的
阅读全文
纹理压缩
摘要:在OpenGL中使用纹理压缩OpenGL 2008-07-14 18:08:45 阅读25 评论0 字号:大中小订阅 纹理压缩技术已经广泛应用在各种3D游戏之中,它们包括:DXTC(Direct X Texture Compress,DirectX纹理压缩,以S3TC为基础)、S3TC(S3 Texture Compress,S3纹理压缩,仅支持S3显卡)、VTC(Volume Texture Compression,体积纹理压缩)、PTC(Palletized Texture Compression,并行纹理压缩)、VQTC(Vector-Quantization Texture Compr
阅读全文
vbo
摘要:根据OpenGL所支持VBO的情况,有三种方式执行渲染(1)支持OpenGL 1.5,使用标准的VBO函数 // 设置顶点缓冲 glGenBuffers(1, &iVertexBuffer); glBindBuffer(GL_ARRAY_BUFFER, iVertexBuffer); glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_list), vertex_list, GL_STATIC_DRAW); // 设置索引缓冲 glGenBuffers(1, &iIndexBuffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFF
阅读全文
智能指针
摘要:最近项目中使用boost库的智能指针,感觉智能指针还是蛮强大的,在此贴出自己学习过程中编写的测试代码,以供其他想了解boost智能指针的朋友参考,有讲得不正确之处欢迎指出讨论。当然,使用boost智能指针首先要编译boost库,具体方法可以网上查询,在此不再赘述。 智能指针能够使C++的开发简单化,主要是它能够自动管理内存的释放,而且能够做更多的事情,即使用智能指针,则可以再代码中new了之后不用delete,智能指针自己会帮助你管理内存资源的释放。 Boost库的智能指针有很多种,下面通过示例代码来说明其中share_ptr的使用方法。 // test.cpp : Defines the e
阅读全文
GPU深度挖掘
摘要:介绍Frame Buffer Object(FBO)扩展,被推荐用于把数据渲染到纹理对像。相对于其它同类技术,如数据拷贝或交换缓冲区等,使用FBO技术会更高效并且更容易实现。在这篇文章中,我将会快速地讲解一下如何来使用这一扩展,同时会介绍一些在使用过程中我们要注意的地方。学会该技术后,你便可以把一些渲染到纹理(render to texture)的功能加入到你的程序中,实现更快速的运行。建立和OpenGL中的其它对像一样,如纹理对像(texture object), 像素缓冲对像(pixel buffer objects), 顶点缓冲对像(vertex buffer object)等,在使用一
阅读全文
Ogre碰撞检测,精确到物体网格三角面
摘要:Ogre碰撞检测,精确到物体网格三角面 (2010-06-11 19:14:27) 转载标签: 杂谈分类: MSN搬家 我们课程的期末项目是做一个蚊子吸血的三维游戏。由于蚊子的体积很小,并且蚊子需要在三维场景中穿梭飞行。因此常规的模型包围盒检测便显得有些不足。例如,场景中有一个台灯,从模型的包围盒看,台灯是一个长方体,如果按照这样来做碰撞检测,那么蚊子便无法从台灯的长长的弧形躯干形成的拱桥洞中飞过去,尽管看起来蚊子确实没有撞到台灯。这在现实中是让人无法接受的。 我曾经尝试了几种方法,一种是用从蚊子出发的指向各个方向的几条射线来检测碰撞,另一种是用一个球体包围蚊子,然后检测球体中的物体个数来检
阅读全文
Ogre:Animation(Ogre中的动画)
摘要:在Ogre中Animation是一块非常重要的部分,但是笔者在学习Ogre的动画时遗憾的发现关于Ogre中动画的资料非常的少,Ogre的sample中只有最简单的导入一个骨骼动画的例子,在网上也很少有人谈及,Ogre Wiki中的教程也是边边角角,不知这么重要的部分为什么不做一个全面的tutorial。我从网上的仅有的一些资料和自己的亲自试验总结了一下基本的Ogre动画的使用,当然Ogre的动画模块非常庞大,我总结的只是冰山一角,但是也是最常用的部分。 Ogre的动画框架: 这其中最底层的类叫做Keyframe类,它表示某一个可驱动物的(一个结点、一根骨头、一个顶点。。)的某一个关键帧的状态(
阅读全文
VBO, PBO与FBO
摘要:OpenGL Pixel Buffer Object (PBO)Related Topics: Vertex Buffer Object (VBO), Frame Buffer Object (FBO) Download: pboUnpack.zip, pboPack.zip OverviewCreating PBOMapping PBOExample: Streaming Texture Uploads with PBOExample: Asynchronous Readback with PBOOverview OpenGL PBO OpenGL ARB_pixel_buffer_obje
阅读全文
shared_ptr源码解读
摘要:1 介绍众所周知,auto_ptr由于它的破坏性复制语义,无法满足标准容器对元素的要求,因而不能放在标准容器中;如果我们希望当容器析构时能自动把它容纳的指针元素所指的对象删除时,通常采用一些间接的方式来实现,显得比较繁琐。boost库中提供了一种新型的智能指针 shared_ptr,它解决了在多个指针间共享对象所有权的问题,同时也满足容器对元素的要求,因而可以安全地放入容器中。现在我们可以这样写: vector shared_ptrBook books;books.push_back( shared_ptrBook(new Book()) );2 实现shared_ptr是怎么实
阅读全文
ogre动画
摘要:OGRE 动画收藏动画是由若干静态画面,快速交替显示而成。因人的眼睛会产生视角暂留,对上一个画面的感知还末消失,下一张画面又出现,就会有动的感觉。计算机图形学中的动画也同样遵循着这一本质的原理。只不过不同于传统动画的手绘和拍摄,Ogre图形引擎可以通过自动或半自动的方式实时产生并播放动画图片。不过Ogre本身并不能像人一样了解场景中动画角色动作的具体含义,例如它不能明确的知道什么是抬手或者走路,只能简单的从数学角度处理顶点的位移和旋转。我们可以通过离线工具来生成具体的动画文件,也可以通过实时的运算产生动画,比如可以实时产生摄像机的运行轨迹。Ogre会根据你提供的参数来更新动画,一般来说这个参数
阅读全文