OpenGL粒子系统
(2014-03-19 22:12:03)
标签:
it |
一、粒子系统(Particle System)
有一些适用于粒子的典型属性:
1.位置(Position):粒子在哪里。
2.速度(Velocity):包括速率(speed)和方向(direction)
3.加速度(Acceleration):
4.生命值(Life):
5.衰减(Decay):
二、OpenGL中三维变换
mode
功能
GL_MODEVIEW
模型视图矩阵堆栈。几何模型的平移、旋转、比例缩放都是通过该函数设定的堆栈完成。视点变换也是通过这个堆栈?
GL_PROJECTION
观察矩阵堆栈。
void glOrtho()和void glPerspective()改变投影变换定义的观察体
GL_TEXTURE
纹理矩阵堆栈
在OpenGL中,平移、旋转和缩放变换的组合会产生复杂的变换效果。不同的变换次序会产生不同的效果。
因为这些函数都是对当前矩阵的操作,并且是累乘的。例如glRotatef()函数的功能实际上是用模型视图矩阵堆栈的当前矩阵乘以该函数定义的矩阵,glTranslatef()则是用前面旋转函数产生的矩阵再乘以该函数定义的矩阵。这种效果就相当于每次变换都建立了一个新的坐标系(在原坐标系基础之上),在当前矩阵堆栈未单位化之前,所有的操作都是在这个坐标系进行的。
下面是Demo中的代码:
glRotatef(90.0f,1.0f,0.0f,0.0f);
// Tilt The View
glRotatef(10.0f,0.0f,1.0f,0.0f);
// Rotate To The Current Stars
Angle(10.0f)
glTranslatef(5.0f,0.0f,0.0f);
// Move
Forward On The X Plane
glRotatef(-10.0f,0.0f,1.0f,0.0f);
// Cancel The Current Stars Angle
glRotatef(-90.0f,1.0f,0.0f,0.0f);
这段代码不仅将模型沿X axis上移动了5.0*cos(10)长度,还沿Y
axis上移动了5.0*sin(10).
三、Blend
OpenGL根据上面的等式计算象素的颜色。s和r下标指定了源象素和目标象素。S和D是混合因子,指定了混合的程度。S和D最常用的值是S=(As,
As, As, As),D=(1-As,1-As,1-As,1-As).这样Blend等式为:(Rs As + Rd (1- As),
Gs As + Gd (1 - As), Bs As + Bs (1 - As), As As + Ad (1 -
As))。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考书目:《NEHE’s OpenGL tutorial》
前一篇:MFC实现OpenGL编程