|
|
发表于 2005-6-2 14:49:00
|
显示全部楼层
Re:平面树的转动是哪里实现的呢?
void baiscobj:: ShowTree(float x,float z,float h,float s,int cactus)//树
1{ glEnable(GL_BLEND); //启用混色
2 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //指定混合的属性。
3 glEnable(GL_ALPHA_TEST); //启用透明
4 glAlphaFunc(GL_GREATER, 0); //设置透明测试
5 float mat[16]; //定义数组保存场景矩阵
6 glGetFloatv(GL_MODELVIEW_MATRIX, mat); //取得场景矩阵的数据
7 vector3_t X(mat[0], mat[4], mat[8]); //场景矩阵的X方向矢量
8 vector3_t Z(mat[1], mat[5], mat[9]); //场景矩阵的Z方向矢量
9 glBindTexture(GL_TEXTURE_2D, g_cactus[cactus]); //选择树
10 vector3_t pos(x,0.0,-z); //树的位置X、Z矩阵变换
11 pos.y = GetHeight(pos.x, pos.z) + h + s; //树的位置Y分量
12 glBegin(GL_QUADS); //开始绘制四边形
13 glTexCoord2f(0.0,0.0);glVertex3fv((pos+(X+Z)*-h).v);//左下点
14 glTexCoord2f(1.0,0.0);glVertex3fv((pos+(X-Z)* h).v);//右下点
15 glTexCoord2f(1.0,1.0);glVertex3fv((pos+(X+Z)* h).v);//右上点
16 glTexCoord2f(0.0,1.0);glVertex3fv((pos+(Z-X)* h).v);//左上点
17 glEnd(); //绘制完成
18 glDisable(GL_ALPHA); //关闭透明
19 glDisable(GL_BLEND); //关闭透明
20}
|
|