OpenGL ES是 OpenGL三維圖形API 的子集,針對手機、PDA和游戲主機等嵌入式設備而設計。 Ophone目前支持OpenGL ES 1.0 ,OpenGL ES 1.0 是以 OpenGL 1.3 規范為基礎的,OpenGL ES 1.1 是以 OpenGL 1.5 規范為基礎的。本文主要介紹利用OpenGL ES繪制圖形方面的基本步驟。
本文內容由三部分構成。首先通過EGL獲得OpenGL ES的編程接口;其次介紹構建3D程序的基本概念;最後是一個應用程序示例。
EGL OpenGL ES 本質上是一個圖形渲染管線的狀態機,而 EGL 則是用於監控這些狀態以及維護幀緩沖和其他渲染面的外部層。圖1 是一個典型的 EGL 系統布局圖。EGL 視窗設計是基於人們熟悉的用於 Microsoft Windows ( WGL )和 UNIX ( GLX )上的 OpenGL 的 Native 接口,與後者比較接近。 OpenGL ES 圖形管線的狀態被存儲於 EGL 管理的一個上下文中。幀緩沖和其他繪制渲染面通過 EGL API 創建、管理和銷毀。 EGL 同時也控制和提供了對設備顯示和可能的設備渲染配置的訪問。 圖1 OpenGL ES 需要一個渲染上下文和渲染面。渲染上下文中存儲OpenGL ES的狀態信息,渲染面用於圖元的繪制。編寫OpenGL ES之前需要EGL的操作有:// EGLContext的靜態方法getEGL獲得EGL實例 EGL10 egl = (EGL10)EGLContext.getEGL(); //創建EGLDisplay, EGL_DEFAULT_DISPLAY獲得缺省的本地窗口系統類型 EGLDisplay dpy = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); //初始化EGLDispla的同時獲得版本號 int[] version = new int[2]; egl.eglInitialize(dpy, version);每個 EGLDisplay 在使用前都需要初始化。初始化 EGLDisplay 的同時能夠得到系統中 EGL 的實現版本號。通過版本號,合理運用相應OpenGL ES API,可以編寫兼容性良好的程序,以適應更多的設備以及提供最大限度的移植性。初始化函數原型: