openGL之API学习(一七零)glEnableClientState glDisableClientState

glEnableClientState 和 glDisableClientState 启用或禁用单个客户端功能。默认情况下,禁用所有客户端功能。glVertexPointer、glColorPointer、glFogCoordPointer、glNormalPointer、glSecondaryColorPointer、glTexCoordPointer等函数调用时,如果使用GL_VERTEX_ARRAY则需要开启相应功能,如果使用GL_ARRAY_BUFFER则不需要开启。

void glEnableClientState(    GLenum cap);

void glEnableClientState(    GLenum cap);

cap

    Specifies the capability to enable. Symbolic constants GL_COLOR_ARRAY, GL_EDGE_FLAG_ARRAY, GL_FOG_COORD_ARRAY, GL_INDEX_ARRAY, GL_NORMAL_ARRAY, GL_SECONDARY_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY, and GL_VERTEX_ARRAY are accepted.

指定要启用的功能。接受符号常量 GL_COLOR_ARRAY、GL_EDGE_FLAG_ARRAY、GL_FOG_COORD_ARRAY、GL_INDEX_ARRAY、GL_NORMAL_ARRAY、GL_SECONDARY_COLOR_ARRAY、GL_TEXTURE_COORD_ARRAY 和 ARRAY_ARRAY。

OpenGL中,绘制一个三角形的基本步骤如下: 1. **设置渲染上下文**:首先,你需要创建一个OpenGL context并初始化它,通常会在窗口创建时完成。 2. **启用顶点数组对象**:使用`glEnableClientState(GL_VERTEX_ARRAY)`启用顶点数据数组。 3. **设置顶点坐标**:定义三角形的顶点位置。例如,如果你的三角形由三个点A(x1, y1), B(x2, y2), C(x3, y3)组成,你可以这样做: ```c++ GLfloat vertices[] = {x1, y1, 0.0f, x2, y2, 0.0f, x3, y3, 0.0f}; glVertexPointer(3, GL_FLOAT, 0, vertices); ``` 4. **指定颜色或其他属性**:可以使用`glColor3ub()`等函数为每个顶点设置颜色。 5. **绑定顶点数组**:`glBindVertexArray`用来绑定你想要操作的顶点数组对象。 6. **启用顶点数组**:再次调用`glEnableVertexAttribArray`启用顶点数据。 7. **绘制三角形**:最后,使用`glDrawArrays(GL_TRIANGLES, 0, 3);`命令实际绘制三角形,GL_TRIANGLES表示绘制的是三角形,参数0是起始索引,3是元素数量(因为每个顶点是一个三元组)。 ```c++ glDrawArrays(GL_TRIANGLES, 0, 3); ``` 8. **结束当前状态**:记得在完成绘制后关闭所有开启的状态,如顶点数组、着色器等。 以上是在OpenGL ES 2.x或更早版本中的做法,现代版本可能会有所不同,特别是当你使用了VBO或VAO的时候。记得在程序结束时调用`glDisableClientState()`和`glDeleteVertexArrays()`释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值