OpenGL glArrayElement

当我们人为的绘制形状时,首先想到是是坐标点,而不是api,如要绘制一条直线,首先将两个点的坐标存在一起,则更加容易理解,OpenGL的顶点数组就是这样的作用.

首先来回顾下之前画直线的函数

示例1

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

需要调用两次glVertex2f ,并且输入两个顶点,现在我们来看另一种做法

示例2

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();

}

vertices记录了两个坐标(x1,y1)=(25,25),(x2,y2)=(100,100) 
但是其索引值却是0,1,2,3.为了识别一个坐标点,需要一个函数将数组进行切分. 
glVertexPointer则用于这个功能,可以称这种数组为混合数组,参数指定了顶点数组的配对点(如坐标定位为2个,颜色则为3个),数据类型及数组 
注意:在使用顶点数组时,必须先调用glEnableClientState开启顶点数组功能,在不用的时候调用glDisableClientState来禁用

glArrayElement则根据顶点数组来调用相应的函数,每次只调用1个顶点

示例2和示例1的效果是相同,初看好像并没有变简单,反而变复杂了.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值