OpenGLES命令需要渲染上下文和繪制表面。渲染上下文存儲(chǔ)相關(guān)的OpenGLES 狀態(tài)刻诊。繪制表面時(shí)用于繪制圖元的表面防楷,它指定渲染所需要的緩沖區(qū)類型。繪制表面還需要制定所需要的緩沖區(qū)的位深度则涯。
EGL是Khronos渲染API與原生窗口系統(tǒng)之間的接口复局。iOS支持OpenGLES但不支持EGL。
OpenGLES應(yīng)用程序必須在渲染之前私用EGL執(zhí)行以下任務(wù):
查詢并初始化設(shè)備可用的顯示器粟判。
創(chuàng)建渲染表面亿昏。
創(chuàng)建渲染上下文。
庫和包含文件
庫:libGLESv2.lib 和EGL庫libEGL.lib
頭文件:
#include <EGL/egl.h>
?#include <GLES3/gl3.h>
選擇性包含 #include <GLES3/gl2ext.h>档礁,這里是擴(kuò)展列表的頭文件
EGL命令語法
所有命令都以egl開頭角钩,每個(gè)單詞首字母大寫
數(shù)據(jù)類型:
32位整數(shù)?——?EGLint
32位無符號(hào)整數(shù)?——?EGLenum、EGLBoolean
指針 —— EGLConfig事秀、EGLContext、EGLDisplay野舶、EGLSurface易迹、EGLClientBuffer
OpenGLES命令語法
所有命令以gl開頭,每個(gè)單詞首字母大寫
有些命令可能采用不同風(fēng)格的參數(shù)平道。風(fēng)格活著類型根據(jù)采用的參數(shù)數(shù)量睹欲、參數(shù)使用的數(shù)據(jù)類型(字節(jié)b,無符號(hào)字節(jié)ub,短整數(shù)s窘疮,無符號(hào)短整數(shù)us袋哼,整數(shù)i,浮點(diǎn)數(shù)f)以及參數(shù)是否以向量v形式傳遞而各不相同闸衫。
錯(cuò)誤處理:
GLenum glGetError(void)
基本錯(cuò)誤代碼:
GL_NO_ERROR? ? 沒有任何錯(cuò)誤
GL_INVALID_ENUM 超出GLenum范圍
GL_INVALID_VALUE 數(shù)值型參數(shù)超出范圍涛贯。
GL_INVALID_OPERATION 特定命令在當(dāng)前OpenGLES狀態(tài)下不能執(zhí)行。
GL_OUT_OF_MEMORY 內(nèi)存不足時(shí)執(zhí)行該命令蔚出。未定義弟翘?
基本狀態(tài)管理:
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
檢查某個(gè)狀態(tài)目前啟用還是禁用
GLboolean glIsEnable(GLenum cap)