多边形有两个面:正面和被面,默认的情况下,正面和背面都是以填充的方式绘制多边形,但通过 void glPolygonMode(GLenum face,GLenum mode) 可以改变绘制方式。其中参数 face的取值为GL_FRONT_AND_BACK,GL_FRONT,GL_BACK;参数mode取值为GL_POINT,GL_LINE,GL_FILL。
2. 角度与弧度的换算
弧度与角度都是为了度量角度的大小。因为Sin函数的参数需要的是弧度,如果我们只有角度的话就需要从角度到弧度的换算,一个圆周的角度是360,而它的弧度为2π(π= 3.141592654 ),所以如果已知角度为n,则弧度为(2π/360) * n;如果已知弧度为m,则角度为 (m / 2π) * 360。
3.模拟波动
设置初始状态的波动图
for(int x=0; x<45; x++)
{
for(int y=0; y<45; y++)
{
points[x][y][0]=float((x/
points[x][y][1]=float((y/
/** sin函数需要一个弧度值,
(x/
再/
*/
points[x][y][2]=float(sin((((x/
}
}
每隔3帧波动一次,这个速度比较合适。
if( wiggle_count == 2 )//帧计数
{
for( y = 0; y < 45; y++ )
{
hold=points[0][y][2];//hold保持最左边点的深度值
for( x = 0; x < 44; x++)
{
//每个点==他x方向前一个点,因为波的传播方向为x方向
points[x][y][2] = points[x+1][y][2];
}
//一个周期结束后最右边的点=最左边的点,使其不断的波动
points[44][y][2]=hold;
}
wiggle_count = 0;
}