- 博客(39)
- 收藏
- 关注
原创 Ogre引擎源码——资源之Skeleton
Ogre中Resouce资源有以下几种类型:Texture、Compositor、Font、GpuProgram、Material、Mesh、Skeleton、BspLevel。本文聚焦于资源Skeleton,这部分资源是Ogre处理动画的环节。Ogre支持三种动画方式:骨骼动画(Skeletal)、变形动画(Morph)以及姿态动画(Pose)。
2011-05-09 20:21:00
3065
原创 OBJ文件格式
OBJ文件是一种静态模型文件,即文件中不包含动画信息。该文件格式由Alias|Wavefront创建。OBJ如此被重视是因为它可以从Maya中导出,后者是支持3D模型创建、编辑等操作的工业标准级的软件。本文来详细理解下OBJ文件的结构。参考内容《Focus On 3D Models》Chapter 4 Loading Obj Files
2011-05-05 10:20:00
3380
原创 MD2文件格式
MD2是一种3D模型网格存储文件格式,最早是由id Software公司为射击游戏Quake II创建的。现今,很多游戏开发者借鉴于MD2文件格式的易用性来设计自己的模型文件。本文来详细理解下MD2文件的结构。
2011-05-03 10:42:00
6537
转载 骨骼动画导论
本文翻译自Evan Pipho的>一书的内关于骨骼动画第五章的内容,去掉了前面的说明和最后的Demo说明,包含了所有的理论内容。骨骼动画是使用”骨头”来运动一个模型而不是通过手动编辑和移动每个顶点或面而实现的动画.每个顶点被附着到一根骨头(或有时是多根骨头).一根骨头或一个关节只是一组顶点的一个控制点.这些概念类似于我们身体里的关节,例如我们的膝关节或腕关节等.
2011-04-27 23:11:00
1931
翻译 数据结构——堆
原文题目:Heap Data StructureBy Arman S. | 7 Mar 2007 原文链接:点这里简介本文简要介绍数据结构 堆 的概念并提供了实现源码: CHeapTree类。CHeapTree类的实现是基于一个自动增长的数组。什么是堆堆是一种特殊的二叉完全树。堆的一个主要特点是它以一定的偏序(a partial order)来保存所有节点[译者注:此处的偏序是指不完全的排序,堆只需要满足父节点大于两个子节点,而子节点之间没有要求]。作为一颗完全树,一层中的节点是从左到右填满的。如果一个节点
2011-04-26 10:27:00
13784
1
原创 Ogre引擎源码——资源之Material
Ogre中资源有以下几种:Texture、Compositor、Font、GpuProgram、Material、Mesh、Skeleton、BspLevel本文聚焦于材质资源Material。DirectX、Opengl中的材质含义为物体的光学属性,如高光和漫反射光的颜色等。但在Ogre中,材质类所包含的概念更大,涵盖了纹理等设置的信息。从某种意思上来说,Ogre中的Material更接近于Shader 的概念。
2011-04-19 16:17:00
4557
原创 内存泄露检测工具 Visual Leak Detector for Visual C++ 2008/2010
Visual Leak Detector是一款免费的检查内存泄露的工具。最新的2.1版本可以很好的支持VS2008/2010。
2011-04-18 10:32:00
7822
2
原创 C++之RAII惯用法
C++中的RAII全称是“Resource acquisition is initialization”,直译为“资源获取就是初始化”。但是这翻译并没有显示出这个惯用法的真正内涵。RAII的好处在于它提供了一种资源自动管理的方式,当产生异常、回滚等现象时,RAII可以正确地释放掉资源。
2011-04-16 14:51:00
17828
原创 C++类成员函数指针
指向C++类成员函数的指针不同于一般的函数指针,称为成员指针(pointer to member)。成员指针包含类的类型以及成员类型。成员指针只应用于类的非static成员,static成员不是任何对象的组成部分,所以不需要特殊语法来指向static成员,static成员函数指针就是普通指针。
2011-03-19 11:16:00
1656
3
翻译 C++教程之指向数组尾边界的内存
直观上,安全的数组操作时不访问一个数组有效边界之外的元素。但是,有些场合,如遍历一个数组或者执行一系列元素操作的算法时,就有可能需要利用指向数组尾边界之外(译者注:数组尾边界之外的内存指的是数组尾部第一个访问非法地址)的内存。这有反于我们的常理,但C++的确允许这样的操作,但你使用的时候也必须非常小心,并且遵守一些重要的限制。
2011-03-17 20:22:00
1602
2
原创 Ogre引擎源码——场景查询
文本解读Ogre中的场景查询SceneQuery。该类为场景管理SceneManager提供了灵活的场景查询方式。
2011-03-14 23:49:00
2250
原创 Ogre引擎源码——资源之GpuProgram
GpuProgram在Ogre中是以Resource的形式保存。该部分与RenderSystem密切有关,Ogre中处理成外部插件的形式,以D3D9,D3D10,D3D11,GL四种类型的GpuProgram与之对应。由于这部分内容涉及的文件较多,不能逐一分解各个类的成员函数与成员变量,以理清所有类的关系为主。
2011-03-10 13:23:00
3310
1
原创 Ogre引擎源码——资源之Font
Resource部分源码已经解读过了,对Ogre如何管理Resource的流程有了一定的了解。下面就来具体看下每种资源的实现。Ogre中的Resource共用如下几种:Texture、Compositor、Font、GputProgram、Material、Mesh、Skeleton、BspLevel本文的主角是Font
2011-03-08 13:12:00
2840
2
转载 程序员从初级到中级10个秘诀
Justin James曾发表过一篇博文《10 tips for advancing from a beginner to an intermediate developer》,为我们分享如何才能完成程序员从初级到中级的蜕变,现将中文译文转载于此,供大家借鉴。 在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为
2011-03-04 18:15:00
867
原创 Ogre引擎源码——文件管理
本文是关于Ogre引擎中的文件Archive部分。Archive定义了Ogre文件系统的文件接口,定义了读取等操作,将文件转换成数据流DataStream的形式,最终保存在内存中。
2011-03-03 20:48:00
2054
原创 Ogre引擎源码——资源管理
作为一个图形绘制引擎,需要管理非常多的图形资源,比如纹理、三角网格等。今天就来看下Ogre中资源管理部分。这部分代码内容不少,但只要能理清这几个类之间的关系,Resource管理的方式也就可见一斑。
2011-03-03 15:42:00
4538
4
原创 Visual Studio 字符编码
最近一直在学习字符编码,Unicode和相关的概念都扫了一遍,但当在VS中代码中还是不清楚本地存储字符的编码方式。
2011-03-01 20:53:00
3177
原创 Unicode字符编码
一直没有搞清楚Unicode编码的问题,导致在写代码的时候,遇到问题总是需要通过搜索来解决。这次就整理下学习的内容,把这块问题好好补上。本文整理了Unicode编码方式和实现方式,主要有UTF-8、UTF-16、UTF-32等。本文应该算学习笔记的摘抄。
2011-02-28 23:38:00
2300
转载 C++ String类查找函数
最近一直在看Ogre代码的String部分,处理字符串经常需要查找和分割,Ogre中大量应用了std::string的成员函数,竟然发现这部分是自己的空白,趁这次机会好好补下。以下转载了一篇关于find函数与find_first_of系列函数的内容,讲解得不错。
2011-02-28 16:57:00
9877
1
原创 Ogre引擎源码——Timer
一个图形绘制引擎底层有很多工具类(utility),通过读基础工具类源码可以学习到不少东西。本文通过解读Ogre的Timer来了解一般计时器的实现方式。
2011-02-24 12:34:00
4722
2
原创 Ogre引擎源码——内存管理
Ogre引擎的内存分配方式主要有三种:NEDPOOLING、NED、STD,通过定义宏OGRE_MEMORY_ALLOCATOR来进行选择,默认情况下使用的是NEDPOOLING。Ogre中所有的分配方式都分为对齐分配内存与不对齐两种class,取名方式是XXAlignedPolicy与XXAllocPolicy,并且所有的内存函数都是静态(static)的。
2011-02-23 14:06:00
6128
1
转载 用QPainter绘图(Painting with QPainter)
用QPainter绘图(Painting with QPainter)要在绘图设备(paint device,一般是一个控件)上开始绘制,我们只要创建一个QPainter,把绘图设备指针传给QPainter对象。
2011-02-21 20:24:00
1673
转载 QT皮肤(QSS)编程
今天写代码用到了qt中的qss来定制UI的style,转载一篇关于qss的使用教程。借用css的灵感, Qt也支持Qt自己的css, 简称qss。同css相似,qss的主要功能与最目的都是能使界面的表现与界面的元素分离,即质与形的分离,就如同一个人可以在不同的时候穿上不同的衣服一样,css机制的引入,使得设计一种皮肤与界面控件分离的软件成为可能,应用程序也能像web界面那样随意地改变外观。
2011-02-21 13:36:00
1780
原创 Decoda调试Lua
本文内容算不上原创,网上已有很多Decoda调试Lua的教程。在此只是把自己弄了几个小时的内容做一个整理。调试Lua脚本的方法很多,也有很多这方面的程序员利用Lua的Debug库写了自己的调试器。我使用的是国外的Decoda软件。官方网站http://www.unknownworlds.com/decoda 最新的版本是1.13,网上也有破解版。Decoda调试Lua主要分两种方法:1、从Decoda启动宿主程序调试Lua2、Decoda注入宿主程序进行调试
2011-02-20 20:55:00
14259
原创 SlickEdit Build 乱码
最近在使用SlickEdit工具,但今天在自己实验室机器上安装后build窗口总是出现乱码。可能由于我是在windows环境下使用的SlickEdit15,网上很多的解决方法不行。
2011-02-20 10:59:00
1973
原创 Luaplus vs2008 编译
昨天想安装个Luaplus的环境,可是遇到了不少问题,在此记录下。Luaplus的官方网站是http://luaplus.org/官网上只有使用git进行更新的源码,我一直没有连上。在下载页面中的文件没有源码,只有3种OS环境下编译出的二进制文件。网上找了不少源码,找到了个用vs2005可编译的源码工程。(在csdn中搜到的,搜索的关键字是 luaplus学习 )。自己机器上只有vs2008,于是就尝试使用08进行编译。
2011-02-20 10:48:00
2407
原创 类机制细节
类中哪些接口应该作为类的成员函数,哪些做成非成员函数能更好的发挥作用?类中的操作符重载应当设计成成员函数、非成员函数还是友元函数?这篇blog尝试着通过一个例子来讨论这些问题。
2011-01-26 17:58:00
966
原创 DirectX 9.0 3D 游戏开发编程基础 学习笔记(一)
一般创建一个directX的程序需要四个步骤:Step 1: Create the IDirect3D9 object; Step 2: Check for hardware vp; Step 3: Fill out the D3DPRESENT_PARAMETERS structure;Step 4: Create the device.认识IDirect3DVertexBuffer9 / IDirect3DResource9
2010-09-24 14:20:00
3397
转载 openGL坐标系
OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。世界坐标系以屏幕中心为原点(0, 0, 0)。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。当前绘图坐标系是 绘制物体时的坐标系。程序刚初始化时,世界坐标系和当前绘图坐标系是重合的。当用glTranslatef(),glScalef(), glRotatef()对当前绘图坐标系进行平移、伸缩、旋转变换之后, 世界坐标系和当前绘图坐标系不再重合。改变以
2010-09-17 14:48:00
33024
转载 C语言运算符优先级及结合性
今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧。发现一篇讲得不错的文章,编辑了下转来供以后翻阅。按运算符优先级从高到低:单目运算符->双目运算符->三目运算符->赋值运算符->逗号运算符 特别在双目运算符中,按 运算符优先级从高到低:算术运算符->移位运算符->关系运算符(其中== 和 !=优先级又较低)->逻辑运算符(按位与-〉按位异或-〉按位或-〉逻辑与-〉逻辑或)!
2010-09-16 14:22:00
4200
1
原创 中断与异常
中断和异常一直是OS课程中的重点,最近在读Csapp中异常部分给了我一些不同的理解方式,在这里稍加总结。首先,给出书中定义:现代操作系统通过使控制流发生突变来对这些情况做出反应。一般而言,把这些突变称为ECF(exceptional control flow),即异常控制流。异常可以分为四类:中断(interrupt)、陷阱(trap)、故障(fault)和终止(abort)。
2010-09-04 15:26:00
875
原创 利用位运算求最大、最小和中间值
最近在学习irrlicht的代码,在irr::core的math部分很不少实用的代码,这里举一个利用位运算求最大、最小和中间值的方法
2010-09-02 10:15:00
2486
转载 大端(Big Endian)与小端(Little Endian)详解
Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。 对于数据中跨越多个字节的对象, 我们必须为它建立这样的约定:(1) 它的地址是多少?(2) 它的字节在内存中是如何组织的?
2010-08-23 09:55:00
526
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人