游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4497|回复: 13

POLYGON 跟 TRIANGLE_FAN 有区别吗?

[复制链接]

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2005-9-18 14:38:00 | 显示全部楼层 |阅读模式
POLYGON(多边形)和TRIANGLE_FAN(三角扇)有区别吗?

请举个 “例子” 说明,什么时候不一样。

(注意:我做过很多实验,用POLYGON和TRIANGLE FAN构成立体图形的实验,
目的是“弄清POLYGON的构图方式”,但那些实验表明:POLYGON就是TRIANGLE FAN。
到底是怎么回事??????
请高人赐教。)

44

主题

248

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-9-18 22:30:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

楼主不会相信的,硬说自己实验的结果是一样的

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2005-9-19 03:55:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

全都是“书呆子”。
说什么“结果是不可预料的”,“会产生交叉”书上写的你就信啊?

我们这吧,C++,你随意取“空间里的n个点,把坐标告诉我”OK?
然后我来预料 用OPENGL渲染后的图形(你说“不可预料”的那个图形)。
如果我预料对了,算我赢!
OK?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2005-9-19 09:42:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

电脑怎么能和人脑比啊,如果人脑能反映出来的东西电脑都能画出来那就恐怖了

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2005-9-19 13:01:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

讨论什么啊。
楼主是牛人。我们这些书呆子还是呆着去吧。

44

主题

248

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-9-19 13:59:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

别人都说了速度上有差别了,你还不信,那有什么办法?
为了满足一下楼主,就算你赢了
另外,我也说一句,你用GL_POLYGON渲染出来的图形  我也可以用GL_LINE_STRIP来实现
按照楼主的逻辑 GL_POLYGON=GL_LINE_STRIP

看来我也有新发现了

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 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();
//图形是:一个顶点,加一个圆,加一个半径线。那里一样啊??????

靠,浪费我时间。

44

主题

248

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-9-19 17:46:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

给我看看你的正确渲染凹多变形的代码
另外 请证明 用GL_TRIANGLE_FAN的渲染速度 和GL_POLYGON一样


2

主题

50

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2005-9-19 18:21:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

spec里说的就要严格遵守,要不然你就是在搬石头砸自己的脚

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2005-9-19 19:32:00 | 显示全部楼层

Re:POLYGON 跟 TRIANGLE_FAN 有区别吗?

glBegin(GL_POLYGON);

glVertex3f(0.0f,0.0f,0.0f);//中间的点(0,0)
glVertex3f(-1.0f,1.0f,0.0f);//左上
glVertex3f(1.0f,1.0f,0.0f);//右上
glVertex3f(1.0f,-1.0f,0.0f);//右下
glVertex3f(-1.0f,-1.0f,0.0f);//左下

glEnd();
//--------------------------------------------------------------------------------------------------------
SSSA2000你浪费了我太多的时间。
别再留言了。拜托。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-27 22:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表