Android OpenGLES笔记

EGL以及OpenGLES命令

2017-06-03  本文已影响186人  cain_huang

OpenGLES命令需要渲染上下文和绘制表面。渲染上下文存储相关的OpenGLES 状态。绘制表面时用于绘制图元的表面,它指定渲染所需要的缓冲区类型。绘制表面还需要制定所需要的缓冲区的位深度。

EGL是Khronos渲染API与原生窗口系统之间的接口。iOS支持OpenGLES但不支持EGL。

OpenGLES应用程序必须在渲染之前私用EGL执行以下任务:

查询并初始化设备可用的显示器。

创建渲染表面。

创建渲染上下文。

库和包含文件

库:libGLESv2.lib 和EGL库libEGL.lib

头文件:

#include <EGL/egl.h>

 #include <GLES3/gl3.h>

选择性包含 #include <GLES3/gl2ext.h>,这里是扩展列表的头文件

EGL命令语法

所有命令都以egl开头,每个单词首字母大写

数据类型:

32位整数 —— EGLint

32位无符号整数 —— EGLenum、EGLBoolean

指针 —— EGLConfig、EGLContext、EGLDisplay、EGLSurface、EGLClientBuffer

OpenGLES命令语法

所有命令以gl开头,每个单词首字母大写

有些命令可能采用不同风格的参数。风格活着类型根据采用的参数数量、参数使用的数据类型(字节b,无符号字节ub,短整数s,无符号短整数us,整数i,浮点数f)以及参数是否以向量v形式传递而各不相同。

错误处理:

GLenum glGetError(void)

基本错误代码:

GL_NO_ERROR    没有任何错误

GL_INVALID_ENUM 超出GLenum范围

GL_INVALID_VALUE 数值型参数超出范围。

GL_INVALID_OPERATION 特定命令在当前OpenGLES状态下不能执行。

GL_OUT_OF_MEMORY 内存不足时执行该命令。未定义?

基本状态管理:

void glEnable(GLenum cap)

void glDisable(GLenum cap)

cap:

GL_BLEND

GL_CULL_FACE

GL_DEPTH_TEST

GL_DITHER

GL_POLYGON_OFFSET_FILL

GL_PRIMITIVE_RESTART_FIXED_INDEX

GL_RASTERIZER_DISCARD

GL_SAMPLE_ALPHA_TO_COVERAGE

GL_SAMPLE_COVERAGE

GL_SCISSOR_TEST

GL_STENCIL_TEST

检查某个状态目前启用还是禁用

GLboolean glIsEnable(GLenum cap)

上一篇下一篇

猜你喜欢

热点阅读