1. 程式人生 > >OpenGL ES學習初體驗

OpenGL ES學習初體驗

緒論

  1. OpenGL定義:OpenGL(全寫Open Graphics Library)是個定義了一個跨程式語言、跨平臺的程式設計介面的規格,它用於三維影象。OpenGL是個專業的圖形程式介面,是一個功能強大,呼叫方便的底層圖形庫。
  2. OpenGL ES(OpenGL for Embedded Systems)是OpenGL三維圖形API的子集,針對手機、PDA和遊戲主機等嵌入式裝置而設計。

圖形基礎

  1. 畫素:它是計算機影象的最小構成元素,由三個顏色元件構成:RGB。
  2. GPU:圖形處理單元,結合集合、顏色、燈光以及其他資料而產生一個影象的硬體元件
  3. 渲染:把程式提供的幾何資料轉化為螢幕上的影象的過程

OpenGL ES相關知識

1.OpenGL ES原理:OpenGL ES部分執行在CPU上,部分執行在GPU上。OpanGL ES橫跨在兩個處理器之間,協調兩個記憶體區域之間的資料交換。CPU計算好現實內容提交到GPU,GPU渲染完成後將渲染結果放入幀緩衝區,隨後視訊控制器按照VSync訊號逐行讀取幀緩衝區的資料,經過數模轉換傳遞給顯示器顯示如圖:
螢幕快照 2018-07-09 下午8.13.25.png
從一個記憶體區域複製資料到另一個記憶體區域速度是相對較慢的,並且在記憶體複製的過程中,CPU和GPU都不能處理這區域記憶體,避免引起錯誤。此外,CPU/GPU執行計算的速度是很快的,而記憶體訪問的速度是相對較慢的,GPU總是受限於記憶體訪問的效能。

  1. 快取:OpenGL ES為兩個記憶體區域間的資料交換定義了快取(buffers)的概念。快取指的是圖形處理器能夠控制和管理連續的RAM。程式從CPU的記憶體複製到OpenGL ES的快取。提供資料給快取需要7個步驟,如下圖:
    螢幕快照 2018-07-09 下午8.29.01.png
    螢幕快照 2018-07-09 下午8.29.16.png
    螢幕快照 2018-07-09 下午8.29.35.png
  2. 幀快取: 接收渲染結果的緩衝區叫做快取(frame buffer),幀快取不需要初始化,因為渲染指令會在適當的時候替換快取的內容。前幀快取(front frame buffer)的特定幀快取中的顏色元素控制著螢幕顯示畫素,後幀快取(back frame buffer)儲存渲染結果。

相關推薦

OpenGL ES學習體驗

緒論 OpenGL定義:OpenGL(全寫Open Graphics Library)是個定義了一個跨程式語言、跨平臺的程式設計介面的規格,它用於三維影象。OpenGL是個專業的圖形程式介面,是一個功能強大,呼叫方便的底層圖形庫。 OpenGL ES(Ope

[原] OpenGL ES 學習筆記 (一)

信號 ppi sci DC RM 視錐 技術分享 img 比較 1. OpenGL ES 的坐標系在屏幕上的分布               OpenGL ES 的坐標系{x, y, z} 通過圖片的三維坐標系可以知道: - 它是一個三維坐標系 {x,

OpenGL ES 學習教程(十三) Stencil_TEST(模板緩衝測試)

模板緩衝測試,是指 將模版緩衝區中的值 與 一個參考值 進行比較,根據比較的結果,來對緩衝區中的值進行修改。進而決定該片段是否有效。在應用中的體現就比如:Unity中的Mask 。大致的工作流程:1、第一次Draw的時候,將所有的片段都設定為不通過模版測試。然後修改模版緩衝區

opengl es學習筆記一

首先明白opengl和opengl es的關係,我想opengl的接受網站上到處都是了,這裡就不囉嗦了,我的理解就是opengl es是opengl的子集,是針對嵌入式裝置而設計的API! 我的這些部落格是學習openglES Game Development的筆記,所以

Android OpenGL ES學習筆記之新增顏色

一、分類 新增顏色的種類有兩種 - Flat coloring 單色 - Smooth coloring 平滑著色 單色 顧命思義就是一種單一的顏色,呼叫 glColor4f(float red,

Android OpenGL ES學習筆記之常用API

上一篇文章Android OpenGL ES學習筆記之繪製點涉及到了一些API,在這篇文章配合一些例項給大家詳細的講解下,會持續更新。 我這裡有OpenGl ES 的API中文文件,不過不全,可以配合著看 開啟連結 密碼:gjlz 一、緩衝區 在O

【Spark深入學習 -15】Spark Streaming前奏-Kafka體驗

rod htm 新的 callback tails 包括 -c 舉例 清理 ----本節內容------- 1.Kafka基礎概念 1.1 出世背景 1.2 基本原理 1.2.1.前置知識 1.2.2.架構和原理 1.2.

Android開發學習之路--異步消息Handler,Message,Looper和AsyncTask之體驗

被調用 project 輸入 gettext npos article app sso 音樂播放 在簡易音樂播放器中。用了Handler。也沒有過多地去研究學習,這裏再學習下android下的異步消息處理機制。這裏用了Handler主要是在線程中不能更新UI

Android開發學習之路--圖表實現(achartengine/MPAndroidChart)之體驗

bundle 喜歡 嵌入式linux Y軸 tid ren sca ref java代碼 ??已經有一段時間沒有更新博客了,在上周離開工作了4年的公司,從此不再安安穩穩地工作了。很多其它的是接受挑戰和實現自身價值的提高。離開了嵌入式linux,從此擁抱移

QT體驗1:如何學習QT之個人淺見,以及如何讀取文本文件,在調試信息中輸出。

沒有 c++教程 最簡 將不 ror 聽說 講解 知識點 括號 2017年11月初,隨著工作崗位的調動,我轉到了研發崗,開始了漫漫程序員的成長之路。首先介紹下個人知識儲備,大一學習過C語言,沒有工程經驗,所學是為了期末考試+2級考試,考完在大學+碩士期間沒有用到編程。 來到

學習java體驗

顯示 pan bsp lib 指定 dir style 控制臺 程序 在甲骨文的學習已經進行了兩個月, 已經開始了java的學習, 學習的首先的感觸就是java的嚴謹性 例如數據類型,嚴謹到小數點。 今天首先學習的事java最基本的操作 清屏:cls; 當DOS控制臺內

Python大數據與機器學習之NumPy體驗

clas 自己 入門 left ray spark AC DC 精通 本文是Python大數據與機器學習系列文章中的第6篇,將介紹學習Python大數據與機器學習所必須的NumPy庫。 通過本文系列文章您將能夠學到的知識如下: 應用Python進行大數據與機器學習

學習Python 全棧案例體驗課程

課程名稱:全棧案例初體驗課程 2018.10.19 執行課程案例 1.從github上下載案例程式碼https://github.com/litaotao/IPython-Dashboard 2.根據requirement.txt,執行"python2 -m pip install 模組

Javaweb學習筆記(二):servlet體驗、HTTP協議

目錄 1.Servlet體驗 1.1servlet的繼承體系 1.2手動開發動態web資源 1.3工具開發動態資源 2.HTTP協議 2.1概念 2.2請求資訊 2.2.1請求行 2.2.2請求頭 2.2.3空行與實體內容 2.3HttpServlet

Android開發學習之路--Activity之體驗

    環境也搭建好了,android系統也基本瞭解了,那麼接下來就可以開始學習android開發了,相信這麼學下去肯定可以把android開發學習好的,再加上時而再溫故下linux下的知識,看看an

學習Docker之Docker體驗---SpringBoot整合Docker的部署、釋出與應用

準備工作 會一點springboot 不會沒關係,花十幾分鍾補一下Quick-SpringBoot 會一點Maven 不會沒關係,花幾分鐘補一下Maven的快速應用 會一點Linux命令 不會沒關係,花十幾分再補一下Linux菜鳥教程 一臺

【JVM學習筆記】(一)jvm體驗-記憶體溢位問題分析及解決方案

####1、開始 建立Main類和Demo類,在Main類的main方法中建立List,並向List中無限建立Demo物件,造成記憶體溢位, 並輸出記憶體溢位錯誤檔案在專案目錄下,為了使等待時間減小,設定執行堆記憶體大小。 ####2、建立Demo類 package com.ch

併發程式設計與高併發解決方案學習(併發程式設計體驗)

以下都是發生執行緒安全的案例: 模擬5000個請求,併發數200 package vip.fkandy.chapter02; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.CountDown

OpenGL ES 3.0程式設計指南學習筆記 第6章 頂點屬性、頂點陣列和緩衝區物件

1)vec2等為float型,也就是著色語言預設為float操作。float,vec2,vec3,vec4 2)矩陣以列優先順序儲存,也就是說矩陣可以看做是由幾個列向量組成,例如;mat3 myMat3 = mat3(1.0, 0.0, 0.0,//First column

零基礎開發OpenGL ES 2.0學習筆記-Android篇(一)

看到蘋果應用商店的火爆,也想做點東西放在上面,現在終於有點時間,可是發現用到的技術都不會,要學的東西很多呀(真是落伍了)~ 身為一個JAVA程式設計師,IOS完全不懂,Android只會一些皮毛,OpenGL更是一竅不通。 所有的東西肯定都是以JAVA思想來寫,摻雜著自己的