openGL中 GL_LINES 与GL_LINE_STRIP 的区别

在绘制直线时,特别是一系列连续的点时,要特别注意 绘线方式GL_LINES 和GL_LINE_STRIP

  • GL_LINES :每一对顶点被解释为一条直线。
  • GL_LINE_STRIP: 一系列的连续直线。

当绘制的点只有两个时,如下代码

 glBegin( GL_LINES);
 glVertex*( V1);
 glVertex*( V2);
 glEnd();

与如下代码:

glBegin( GL_LINE_STRIP)
glVertex*( V1);
glVertex*( V2);
glEnd();

,GL_LINE与GL_LINE_STRIP绘线方式没有差异,绘制结果都是一条连接点V1与点V2的一条直线。

       当绘制的是一系列点的时候,比如点集为:V1, V2, V3, V4, V5, V6; GL_LINES与GL_LINE_STRIP的区别就会很明显。如下代码:

glBegin( GL_LINES);
glVertex*( V1);
glVertex*( V2);

.....

glVertex*( V6);
glEnd();

上述程序的绘制结果是:V1与V2之间, V3与V4之间, V5与V6之间是直线连接的, V2与V3, V4与V5之间没有直线连接;如下为在棋盘格上以GL_LINES绘制的直线,可以看到直线之间有明显的断开:

如下代码:

glBegin( GL_LINE_STRIP);
glVertex*( V1);
glVertex*( V2);

.....
glVertex*( V6);
glEnd();

 上述程序的绘制结果是:V1与V2, V2与V3, V3与V4, V4与V5,V5与V6之间都是直线连接的。如下为在棋盘格上以GL_LINE_STRIP绘制的直线, 没有断开。

本文转自:OpenGL绘线方式 GL_LINES与GL_LINE_STRIP的区别 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GL_LINES_ADJACENCY是OpenGL的一个枚举值,用于指定如何绘制线段。 使用GL_LINES_ADJACENCY时,每两个顶点定义一条线段,但是还会使用前一个顶点和后一个顶点来定义相邻的线段。这样可以让OpenGL在绘制时同时考虑相邻线段的关系。 下面是一个使用GL_LINES_ADJACENCY绘制线段的示例代码: ```c++ // 定义顶点坐标 GLfloat vertices[] = { -0.5f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f,-0.5f, 0.0f }; // 定义线段索引 GLuint indices[] = { 0, 1, 2, // 第一条线段 1, 2, 3, // 第二条线段 2, 3, 4, // 第三条线段 3, 4, 5 // 第四条线段 }; // 创建顶点缓冲区和索引缓冲区 GLuint VBO, EBO; glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glGenBuffers(1, &EBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); // 绘制线段 glLineWidth(2.0f); glDrawElements(GL_LINES_ADJACENCY, 12, GL_UNSIGNED_INT, 0); // 清理缓冲区 glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); glDeleteBuffers(1, &VBO); glDeleteBuffers(1, &EBO); ``` 在上面的代码,我们定义了6个顶点和4条线段,使用GL_LINES_ADJACENCY绘制出了这4条线段。需要注意的是,即使我们定义了4条线段,实际上绘制时会使用6条线段,因为每条线段都考虑了相邻线段的关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值