技术沉思录

技术沉思录

(Unity) -- [Android] -- [Performance] -- [Interview]

OpenGLES 3.0 - VBO、EBO和VAO

在前面几个章节中,我们使用到了很多概念,没有进行描述,本节针对前面使用到的一些概念,再进行一个普及。已经涉及到的几个概念:VBO、EBO(IBO)、VAO。
VBO和EBO是在OpenGL1.5中引入的,主要用于优化顶点数据的存储和索引管理。
VAO则是在OpenGL3.0中引入的,用于简化顶点缓冲和属性的管理。
VBO和EBO的作用是在显存中申请一块内存,用于缓存数据,降低内存拷贝带来的开销。之前用于绘制的顶点数据会先保存在CPU,每次调用绘制函数的时候,再把顶点数据从CPU拷贝到显存中,这也是一个比较大的开销。

OpenGLES 3.0 - 纹理映射

纹理

纹理是指在计算机图形学中,为了增加物体表面的细节和真实感而使用的一种技术。纹理是一个2D图片,(甚至也有1D和3D的纹理),可以简单理解为物体表面的图案。
在OpenGL ES中,纹理实际上是一个可以被采样的复杂数据集合,是 GPU 的图像数据结构,纹理分为2D纹理、2D纹理数组、3D纹理和立方图纹理。
在Android GLES中,主要分为外部GLES纹理(GL_TEXTURE_EXTERNAL_OES)与传统GLES纹理 (GL_TEXTURE_2D)。

OpenGLES 3.0 - 着色器语言GLSL
简介在OpenGL开发过程中,我们经常会用到着色器语言(GLSL),它主要用于编写顶点着色器和片段着色器,接下来会详细讲解着色器语言GL Shader Language(GLSL)的一些基本概念。 版本GLSL最初随着OpenGL2.0版本一同发布,随着OpenGL版本的不断升级。OpenGL版本和GLSL版本对应关系: OpenGL版本 GLSL版本 发布时间 2.0 110 2004年9月7日 2.1 120 2006年7月2日 3.0 130 2008年8月11日 3.1 140 2009年3月24日 3.2 150 2009年8月3日 3.3 33...
OpenGLES 3.0 - 简介和基础绘制流程

简介

OpenGL

pPK8x4P.jpg
OpenGL(Open Graphics Library,开放图形库),是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口规范。
它本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。它的实现由显示设备厂商提供,并且非常依赖该厂商提供的硬件。
当你使用Apple系统的时候,OpenGL库是由Apple维护的。在Windows上,OpenGL库可能是Direct3D接口的一个封装(Wrapper)。表面上调用OpenGL接口,实际上是间接调用了Direct3D接口。