【OpenGL 学习笔记04】顶点数组

通过之前的学习,我们知道,如果要绘制一个几何图形,那就要不断的调用绘制函数,比如绘制一个20条边的多边形,起码要调用22条函数(包含glBegin和glEnd)。
所以OpenGL提供了一系列的顶点数组函数减少函数调用的次数来提高性能。而且使用顶点还可以避免顶点共享的冗余处理。

1.简单示例

先来回顾一下之前我们是怎么画直线的:

void drawOneLine(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2)
{
   glBegin(GL_LINES);
   glVertex2f (x1,y1); 
   glVertex2f (x2,y2);
   glEnd();
}

对于上面的示例,我们使用顶点数组如下:

void drawLineWithArray()
{
    GLint vertices[]={25,25,
                      100,100
                     };
    glEnableClientState(GL_VERTEX_ARRAY);//启用顶点数组
    glVertexPointer(2,GL_INT,0,vertices);//指定数组数据
    glBegin(GL_LINES);
    glArrayElement(0);                   //解引用和渲染
    glArrayElement(1);
    glEnd();
}

2.使用顶点数组的三个步骤

(1)先启用顶点数组

//指定需要启动的数组(GL_VERTEX_ARRAY,GL_COLOR_ARRAY,GL_INDEX_ARRAY等8个可用数组)
void glEnableClientState(GLenum array);

(2)指定数组数据

//size表示顶点坐标数量(2,3,4),type表示数据类型,stride表示连续顶点之间字节偏移(0表示紧密相邻),pointer表示数组首地址
void glVertexPointer(GLint size,GLenum type,GLsizei s
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值