|
|

楼主 |
发表于 2005-9-19 16:24:00
|
显示全部楼层
Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?
我举个例子,很简单。
glBegin(GL_POLYGON);
glVertex3f(0.0f,1.0f,0.0f);//圆锥顶点
for(int i=0;i<360;i+=1) //角度 i
{float p=(float)(i*3.14/180);角度i,转换成RAD角
glVertex3f((float)cos(p), 0.0f, (float)sin(p) );//扇区的边缘点坐标
}glVertex3f(0.0f,0.0f,1.0f);//边缘点最终坐标(为了完美,与第一点重叠)
glEnd();
//以上,用POLYGON构图,构成高度为1,半径为1的圆锥。
//--------------------------------------------------------------------------------------------------------
用TRIANGLE也一样。
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0.0f,1.0f,0.0f);//圆锥顶点
for(int i=0;i<360;i+=1) //角度 i
{float p=(float)(i*3.14/180);角度i,转换成RAD角
glVertex3f((float)cos(p), 0.0f, (float)sin(p) );//扇区的边缘点坐标
}glVertex3f(0.0f,0.0f,1.0f);//边缘点最终坐标(为了完美,与第一点重叠)
glEnd();
//以上,用TRIANGLE_FAN 构图,构成高度为1,半径为1的圆锥。
//--------------------------------------------------------------------------------------------------------
两个图形完全吻合(也不排除“只有N卡才吻合”)
//--------------------------------------------------------------------------------------------------------
“GL_POLYGON=GL_LINE_STRIP”就太可笑了!!!!
glBegin(GL_LINE_STRIP);
glVertex3f(0.0f,1.0f,0.0f);//圆锥顶点
for(int i=0;i<360;i+=1) //角度 i
{float p=(float)(i*3.14/180);角度i,转换成RAD角
glVertex3f((float)cos(p), 0.0f, (float)sin(p) );//扇区的边缘点坐标
}glVertex3f(0.0f,0.0f,1.0f);//边缘点最终坐标(为了完美,与第一点重叠)
glEnd();
//图形是:一个顶点,加一个圆,加一个半径线。那里一样啊??????
靠,浪费我时间。
|
|