opengl生成三角网(GL_TRIANGLE_STRIP)的时候需要什么要求吗

gzyyan249 2011-05-25 04:28:41
我想生成一个三角网,用的方法是随机生成顶点,然后通过(GL_TRIANGLE_STRIP)生成三角网,但是最后什么东西都没生成,不知道这是什么原因,是不是生成三角网(GL_TRIANGLE_STRIP)的时候有什么要求呢?比如说顶点是不是要求有序的等等!!希望各位能帮我解答这个问题,在此先感谢大家了。
...全文
927 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xirunping 2011-11-28
  • 打赏
  • 举报
回复 1
生成的随机点坐标,应该按一定顺序(升或降)排列:
GL_TRIANGLE_STRIP 这个参数要求后边一个点与前边三角形最后两个点生成新的三角形。
因为你的顺序是乱的,所以OPENGL无法生成你所期待的图形
gzyyan249 2011-06-07
  • 打赏
  • 举报
回复
没人回答,结贴算了
gzyyan249 2011-05-29
  • 打赏
  • 举报
回复
那就是说,顶点数据是要自己处理的咯,然后就是opengl绘图的事了
天鹅梦 2011-05-28
  • 打赏
  • 举报
回复
顶点顺序只有在用OPENGL绘制时才考虑
gzyyan249 2011-05-28
  • 打赏
  • 举报
回复
逐点内插算法 如何用代码实现呢,要是用逐点内插算法还需要考虑顶点的顺序问题吗
天鹅梦 2011-05-26
  • 打赏
  • 举报
回复
实际上是有个顺序的,三个点满足右手,即逆时针,法矢量向外,你这种搞法,不是很可取,你可以随机生成点,但构建三角网,你最好还是借助delauny剖分一下,然后得到真正可看的三角网,然后再按你上面的程序那样把三角网绘制出来,OpenGL不具备生成三角网的能力,它只是个渲染引擎,能表现你的数据,但处理数据,你还得自己做。
LBJMD 2011-05-26
  • 打赏
  • 举报
回复
随机生成的顶点值坐标,你都不知道大小。没有把模型设置到可以看到的区域,怎么可以看到图像。
你要设置合适的视点去观察。
ryfdizuo 2011-05-26
  • 打赏
  • 举报
回复
顶点必须逆序,
右手定则: 这是最基本要求。
gzyyan249 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lbjmd 的回复:]

随机生成的顶点值坐标,你都不知道大小。没有把模型设置到可以看到的区域,怎么可以看到图像。
你要设置合适的视点去观察。
[/Quote]
我已经把大小控制在3以内了
gzyyan249 2011-05-25
  • 打赏
  • 举报
回复
我是把随机数存在数组里的,但是就是没图像生成,生成效果有点类似地形的那种。代码如下
void createtin::render ()
{

int x;
/****************随机数*****************/
float a[101],b[101],c[101];
srand(unsigned(time(NULL)));
for(int i=0;i<100;i++)
{

a[i]=rand()/3.0;
b[i]=rand()/3.0+rand()/3.0;
c[i]=rand()/3.0+0.5;
}
/*****************随机数********************/
//cull non camera-facing polygons
// glEnable( GL_CULL_FACE );


glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

glShadeModel(GL_SMOOTH);
glBegin( GL_TRIANGLE_STRIP );
//loop through the Z-axis of the terrain
// for(z=0;z<10;z++)
// {
//begin a new triangle strip

for(x=0;x<99;x++)
{
//set the color with OpenGL, and render the point
glColor3f((x+2)/(x+13),(x+2)/(x+13),(x+2)/(x+13));
glVertex3f(a[x],b[x],-c[x]);

glColor3f(x/(x+13),(x+2)/(x+13),(x+2)/(x+13));
glVertex3f(a[x+1],b[x],-c[x]);

glColor3f((x+10)/(x+13),(x+2)/(x+13),(x+2)/(x+13));
glVertex3f(a[x],b[x+1],-c[x]);

glColor3f((x+10)/(x+13),(x+2)/(x+13),(x+2)/(x+13));
glVertex3f(a[x],b[x],-c[x+1]);

}

//end the triangle strip

// }
glEnd( );
glFlush();
}
king__xy 2011-05-25
  • 打赏
  • 举报
回复
lz想要什么结果,是不是生成高低不平的地面,那样可以读取高度图来实现,
你可以把随机生成的数字存放在一个数组中,这样用起来就方便很多了,而且便于查错

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧