編輯:Android開發實例
EGL Specification 1.0 的研讀筆記
我的“Android OpenGL ES 1.x 教程的Native實現”中有Android平台下EGL的創建、銷毀的代碼
EGL是OpenGL ES與本地Window系統之間的橋梁。EGL創建渲染上下文(Rendering Context)和Surface,Rendering Context是OpenGL ES的狀態機,Surface是OpenGL ES繪圖的“畫布”
Display是OpenGL ES應用運行平台的物理顯示器的抽象
OpenGL ES狀態機,由EGL創建、並與Surface關聯
Rendering Context含有OpenGL ES的客戶端和服務器端狀態
Rendering Context存在於客戶端的地址空間。每個線程在同一時刻只能使用1個Rendering Context,每個Rendering Context在同一時刻只能被1個線程使用
OpenGL ES繪圖的“畫布”。EGL/OpenGL ES有3種Surface:
OpenGL支持2種渲染模式:
window和pbuffer Surface是back buffered模式,pixmap Surface是single buffered模式
用於創建Surface,包含了Surface的各個buffer的創建參數
要點:
對每一個Display,都要初始化EGL
釋放EGL相關資源
Config用於創建Surface
獲取一個Display與指定屬性相匹配的Config列表
獲取一個Display所支持的所有Config列表
常用Config屬性有:
屬性 說明EGL_RED_SIZE
EGL_GREEN_SIZE
EGL_BLUE_SIZE
EGL_ALPHA_SIZE
color buffer的RGBA分量的顏色深度(位數) EGL_BUFFER_SIZEcolor buffer 的顏色深度(bpp)
EGL_RED/GREEN/BLUE/ALPHA_SIZE之和
EGL_SURFACE_TYPESurface類型,可選值為:
創建window Surface(on-screen 渲染)
釋放Surface相關資源
指定Display、Config,創建一個Rendering Context
多個Rendering Context可以共享數據,eglCreateContext()有一個參數為與其共享數據的另一個Context
釋放Context相關的資源
將Rendering Context綁定到當前線程,並且綁定Rendering Context與Surface
如果當前線程已經綁定了另一個Context,則原Context將解除綁定。因此可以以NULL或者EGL_NO_CONTEXT調用eglMakeCurrent來解除線程與當前Context之間的綁定關系
將back buffer拷貝到窗口
獲取最近一次EGL函數的錯誤代碼
有時候,不希望圖片突然出現在屏幕上,而要應用某種形式的動畫顯示圖片時,從一個圖像轉換到另一個。這是在Android中支持的ImageSwitcher圖像切換器允許通過它們
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用