社区
图形处理/算法
帖子详情
opengl生成三角网(GL_TRIANGLE_STRIP)的时候需要什么要求吗
gzyyan249
2011-05-25 04:28:41
我想生成一个三角网,用的方法是随机生成顶点,然后通过(GL_TRIANGLE_STRIP)生成三角网,但是最后什么东西都没生成,不知道这是什么原因,是不是生成三角网(GL_TRIANGLE_STRIP)的时候有什么要求呢?比如说顶点是不是要求有序的等等!!希望各位能帮我解答这个问题,在此先感谢大家了。
...全文
927
11
打赏
收藏
opengl生成三角网(GL_TRIANGLE_STRIP)的时候需要什么要求吗
我想生成一个三角网,用的方法是随机生成顶点,然后通过(GL_TRIANGLE_STRIP)生成三角网,但是最后什么东西都没生成,不知道这是什么原因,是不是生成三角网(GL_TRIANGLE_STRIP)的时候有什么要求呢?比如说顶点是不是要求有序的等等!!希望各位能帮我解答这个问题,在此先感谢大家了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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想要什么结果,是不是生成高低不平的地面,那样可以读取高度图来实现,
你可以把随机生成的数字存放在一个数组中,这样用起来就方便很多了,而且便于查错
Open
GL
绘制一个三角形带(T
ria
n
gl
e
Strip
)
Homework1:绘制一个三角形#define _STDCALL_SUPPORTED #define _M_IX86 #define
GL
UT_DISABLE_ATEXIT_HACK #define
GL
UT_NO_WARNING_DISABLE #include <
GL
/
gl
.h> #include <
GL
/
gl
ut.h> void myDisplay(void) ...
open
gl
polygon 三角剖分
多边形会被分割为多个面片,每个面片的BeginMode类型是不一样的,有可能是
GL
_T
RIA
N
GL
E
_
STRIP
或者
GL
_T
RIA
N
GL
E
_FAN。比如一个18个点的多边形,可能会被分割成3个面片:6个点组成的
GL
_T
RIA
N
GL
E
_
STRIP
,9个点组成的
GL
_T
RIA
N
GL
E
_FAN,9个点组成的
GL
_T
RIA
N
GL
E
_
STRIP
。(数组是我编的,但是a.分割不会创建新点,b.因为存在不同三角形共用点的情况,分割后的点数量大于分割前的。在
GL
U_TESS_VERTEX的回调函数中,取得分割后的坐标。
Open
GL
学习记录(002)-画个三角形
环境搭好了,就可以试着开始最简单的
Open
GL
开发学习了,这里从最简单的绘制三角形开始。在上一章节中的代码中添加如下代码:
gl
Begin(
GL
_T
RIA
N
GL
E
S);//开始绘制三角形
gl
Vertex2f(-0.5f,-0.5f);//顶点坐标 ,这里一定要填三个坐标,否则绘制不出来三角形
gl
Vertex2f(0.0f,0.5f);//顶点坐标
gl
Vertex2f(0.5f,-0.5f);//顶点坐标
gl
End()
Open
GL
:图元类型
三角形图元、线图元、点图元、补丁图元
Open
GL
之相关库介绍及基本语法、The
Open
GL
Machine
open
gl
状态机,相关概念介绍。
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章