在openGL中,所有图形都是通过分解成三角形的方式进行绘制。(一个矩形分解成两个三角形进行绘制)
glDrawArrays 和 glDrawElements 的作用都是从一个数据数组中提取数据渲染基本图元。
 一、glDrawArrays(int mode,int first,int count)
1、mode:
1>GL_TRIANGLES:  意味着openGL使用三个顶点来组成图形一个三角形。顶点0,1,2组成一个三角形,顶点3,4,5组成一个三角形,直到数组结束。
2>GL_TRIANGLE_FAN:  跳过刚开始的两个顶点,然后遍历每个顶点,让openGL将这些顶点于它们前一个,以及数组的第一个顶点一起组成一个三角形。
例如四个顶点:P2、P1、P0 ; P3、P2、P0 这2个三角形。
3>GL_TRIANGLE_STRIP:   顺序在每三个顶点之间绘制三角形,这个方法可以保证从相同的方向上所有三角形均被绘制。以V0V1V2,V1V2V3,V2V3V4……的形式绘制三角形
2、first
表示从数组缓存中哪一位开始绘制,一般定义为0
3、count
顶点的数量
例子如下:
 const GLfloat vertices[] = {
-0.5f,-0.5f,0.0f,1.0f,
0.5f,-0.5f,0.0f,1.0f,
0.5f,0.5f,0.0f,1.0f,
-0.5f,0.5f,0.0f,1.0f
};

//绘制模型
glDrawArrays(GL_TRIANGLE_FAN,0,4);

二、glDrawElements

如果代码中需要索引来渲染,采用了EBO时,则需要用glDrawElements函数来代替glDrawArrays函数,来指明我们从索引缓冲渲染

void glDrawElements( GLenum mode, GLsizei count,GLenum type, const GLvoid *indices);

第一个参数指定了我们绘制的模式;
第二个参数是我们打算绘制顶点的个数;
第三个参数是索引的类型; GL_UNSIGNED_BYTE/INT/SHORT
第四个参数指向索引数组的指针

注意

  1. 绑定VAO时也会自动绑定EBO
  2. 不要在解绑VAO之前解绑EBO(GL_ELEMENT_ARRAY_BUFFER),否则它就没有这个EBO配置。

其它顺序无关,只要解绑vao在解绑ebo前边即可。

//解绑VAO
glBindVertexArray(0);
//解绑EBO
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
//解绑VBO
glBindBuffer(GL_ARRAY_BUFFER, 0);

最新文章

  1. Moon.Orm性能报告
  2. 使用jigdo下载debian [windows环境下]
  3. python求职之路
  4. spring源码学习之路---深入AOP(终)
  5. 再也不用管UIImagePicker的代理了
  6. CodeForces 242E - XOR on Segment 二维线段树?
  7. Vmware linux 安装 Vmware Tools 提示只读
  8. .net webapi项目中支持session
  9. docker使用Let’s Encrypt协议构建免费https协议
  10. 《重构——改善既有代码的设计》【PDF】下载
  11. 单元测试之Fixture
  12. CMDB服务器管理系统【s5day88】:采集资产-文件配置(一)
  13. Python 通用爬虫 和讯博客 scrapy
  14. 🍓 react,jroll滑动删除 🍓
  15. C++并发编程 条件变量 condition_variable,线程安全队列示例
  16. android与JS交互,互相调用方法,跳转到网页
  17. Redis 在线管理工具(phpRedisAdmin)介绍
  18. hibernate5(12)注解映射[4]一对一外键关联
  19. 此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库
  20. 品鉴同事发来的炸金花的PHP程序代码

热门文章

  1. 原生JS获取元素宽高实践详解
  2. COUNT 和 IFNULL函数
  3. fedora18 You might need to install dependency packages for libxcb.
  4. 在Linux环境中运行python 项目
  5. chales抓包,模拟异常情况
  6. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_02 泛型_4_定义和使用含有泛型的方法
  7. 《计算机程式设计》Week3 课堂笔记
  8. R语言CSV文件
  9. NanUI
  10. virutalenv一次行安装多个requirements里的文件