EGL与OpenGL ES
OpenGL ES命令需要渲染上下文Context和绘制表面Surface,但不包括如何创建渲染上下文,如何将渲染上下文连接到原生窗口系统,EGL则提供了这个功能,EGL是Khronos渲染API(如OpenGL ES)和原生窗口系统之间的接口。OpenGL ES在渲染之前,需要EGL查询并初始化设备商可用的显示器,创建渲染表面,创建渲染上下文。使用Opengl ES 3.0时,需要包含相应的头文件并链接对应的库,库包括libGLESv2和libEGL,头文件如下:
#include
#include
#include
#include
EGL API以egl开始,后面每个单词首字母大写,EGL数据类型以EGL开始,后面每个单词首字母大写,但EGLint和EGLenum除外,下图是EGL的数据类型:
OpenGL ES API以gl开始,后面每个单词首字母大写,OpenGL ES数据类型以GL开始,后面每个单词首字母小写,另外,有些API可能采样不同风格的参数,形如glXxxNumType,Num即参数个数,Type即参数类型,具体类型如下图所示:
若不正确使用OpenGL ES API,应用程序会生成一个错误代码,可以用如下函数查询:
GLenum glGetError(void);
glGetError返回当前错误代码,并将当前错误代码复位为GL_NO_ERROR,除了GL_OUT_OF_MEMORY错误之外,其它的生成错误的命令会被忽略,且不会影响OpenGL ES状态。基本错误代码如下:
同理,EGL也有类似查询错误的函数如下:
EGLint eglGetError(void);
URL方案和关系
URL有时候被用来定位那些包含指示器的资源,而这些指示器又指向其他资源。有时候这些指示器用关系链接表示,在关系链接中第二资源的位置表示符原则上“和那些除了带有次相关路径的表示符相同”。在这篇文档中没有对关系链接进行描述。但是,关系链接的使用依赖于包含分层结构的原始URL,它是关系链接的基础。有些URL方案(例如ftp,http,和文件方案)包含的名字可以被认为是分层次的;这些层次之间用“/”分隔。