- 博客(10)
- 资源 (3)
- 收藏
- 关注
原创 OpenGL--骨骼动画
理论基础骨骼蒙皮动画其实现类似人体模型,由节点(关节)树构成,节点间通过骨骼连接,每块骨骼至多一个父节点,父节点带动子骨骼运动。具体是关节带动其对应子骨骼运动从而牵动绑定到其上的皮肤变化。骨骼是刚体不会变形,只能绕父节点旋转(构造前面章节有提–3D世界实现中的机器人手臂例子,早期的骨骼动画就是这样,不过在关节处会有明显裂缝,所以才引出现在的蒙皮概念)。而绑定到其上的皮肤顶点则是实时变换拉伸的,变换
2015-05-30 16:56:56 8541 4
原创 OpenGL--粒子系统
理论基础 1,粒子系统的基本思想是用许多形状简单且赋予生命的微小粒子作为基本元素来表示物体(一般由点或很小的多边形通过纹理贴图表示),侧重于物体的总体形态和特征的动态变化。把物体定义为许多不规则,随机分布的粒子,且每个粒子均有一定的生命周期。随着时间的推移,旧的粒子不断消失(死亡),新的粒子不断加入(生长)。粒子的这种出生,成长,衰老和死亡的过程,能够较好地反映模糊物体的动态特性。因此它比起传统的
2015-05-21 10:32:06 15653 11
原创 C++--继承与多态
虚函数 在C++中,使用关键字virtual声明函数为虚函数,那么在对象创建调用构造函数里就会隐式的生成一个虚表指针(它被定义在对象首地址的前4个字节处,有虚函数的对象大小要多加4字节,就是多了一个指针的大小,因此虚函数必须是成员函数),它指向一个虚函数列表并初始化,这个虚函数列表其实就是一个指针数组,保存着这个对象所有虚函数的首地址。我们的多态(继承中)其实就是通过虚函数实现的,反过来虚函数就是
2015-05-16 10:08:14 2542
原创 C++--构造函数与析构函数
malloc与new区别 1,malloc是c语言的函数而new是c++里的运算符。 2,new会自动触发构造函数,而malloc不负责触发构造函数。所以成功分配内存的话,new返回对应类型的指针而malloc(num:即多少个字节)是不知道类型的,返回void *。分配失败则是返回NULL。并不是每个对象都会有默认构造函数 1,本类或父类里定义了虚函数,会要调用默认构造函数,初始化虚表。
2015-05-15 14:30:30 2466
原创 C++--结构体和类
结构体和类只有一个区别就是前者访问控制默认为public,而类的默认访问控制是private。而对于public,private,protected的访问控制都是在编译期间由编译器检查的,编译通过后,程序执行过程中就不存在什么访问限制了。它们在底层只是类型名称不同,原理都相同。类与对象,类是一个抽象的概念,而对象则是这个抽象概念里的一个具体实例。(如人–CXX…)类一般由数据成员和函数成员组成,而
2015-05-14 14:49:18 3010
原创 C++--函数,变量,数组底层表现
函数的工作原理 函数调用其底层操作是创建了一个栈空间,而函数的入口地址,参数,临时变量等就是先通过push入栈,返回时pop出栈释放,保存栈平衡,系统自动管理内存。这个栈通过ebp(栈底)和esp(栈顶)两个寄存器管理控制。变量在内存中的表现形式 局部变量:保存在栈区,运行时对应申请的内存,生命周期就是在自己的作用域内。 全局变量:表现类似常量,在编译时就已经存在,其内存地址由编译器在运行前
2015-05-11 19:44:49 2341
原创 C++--流程控制语句
从底层谈流程控制语句 一般语句是从低地址到高地址(从上往下)顺序执行的,而流程控制语句则不是顺序执行而是通过 jxx 和 cmp (跳转和比较)指令实现的。而不同的流程控制语句之间效率的比较,我们主要是看它们跳转的次数多少,越少跳转,效率越高。不过这些,编译器一般会做优化,如把跳转次数多的控制语句转换成次数少的语句等。if…else 与 switch语句的比较 if 语句条件判断对应的汇编跳转
2015-05-08 14:36:40 2889
原创 C++--观察各种表达式与编译器使用的优化技巧
观察各种表达式的求值过程算术运算 1,包括“+,-,*,/”,如果不考虑编辑器的优化,他们在底层的运算过程一般是:先从内存中把值拷贝到寄存器中,然后在cpu中进行相应地运算,最后再把结果送回到内存。(对于常量一般就是直接当立即数用,都不需要经过内存) 注:’%’ 运算的符号和第一个操作数的符号一致。对于 ‘/’ 运算,有符号 / 有符号 = 有符号,无符号 / 无符号 = 无符号,但是要注意
2015-05-07 16:05:14 2677
原创 C++ -- 基本数据类型的表现形式
基本数据类型的表现形式整数类型 C++提供的整数类型有三种:int, long, short,在32位系统中,int, long 都占4字节,short占2字节。同时它们又可以分为有符号型与无符号型,在内存中,前者数据由一个符号位 + 数据位组成,而后者全是数据位组成。所以无符号整数类型表示的正数区间比有符号表示的正数区间要大一倍。如以int为例,对于unsigned int的取值范围:0x00
2015-05-05 17:03:08 2456
原创 汇编语言--前言
1,汇编语言:早期程序员发现使用机器语言(二进制)来操作计算机很麻烦,难以看懂。于是汇编语言就产生了,简单点说它其实就是用一些助记符来标示对应的机器语言,便于阅读和记忆。例如:机器指令1000100111011000表示把寄存器BX的内容送到AX中,而对应的汇编代码就是 mov ax, bx。2,汇编程序的工作过程一般是如下图: 由3类指令组成:(1)汇编指令,机器码的助记符,有对应的机器码。
2015-05-05 10:38:07 1439
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人