1. 程式人生 > >OpenGL學習歸納 -- buffer的使用總結

OpenGL學習歸納 -- buffer的使用總結

1. buffer分為frame buffer和render buffer兩大類,其中frame buffer相當於render buffer的管理者,frame buffer object即稱為FBO,常用於做離屏渲染緩衝等。render buffer則又可分為三類,color buffer / depth buffer / stencil buffer。

2. 生成frame buffer object的API函式:

 glGenFramebuffers(1, &framebuffer);

 glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);

生成render buffer的API函式,render buffer的生成函式是一樣的,buffer控制代碼型別只有在進行分配buffer空間的時候才會確定:

glGenRenderbuffers(1, &renderbuffer);

glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);

2. frame buffer僅僅是管理者,不需要分配空間;render buffer的儲存空間的分配,對於不同的render buffer,使用不同的API進行分配,而只有分配空間的時候,render buffer控制代碼才確定其型別

(1). 最基本的是color buffer,呼叫EGALContext的OC方法為其分配空間

/* Attaches an EAGLDrawable as storage for the OpenGL ES renderbuffer object bound to <target> */

- (BOOL)renderbufferStorage:(NSUInteger)target fromDrawable:(id<EAGLDrawable>)drawable;

(2). 而depth buffer則可以直接呼叫openGL本身的API進行分配

glRenderbufferStorage(GL_RENDERBUFFER,GL_DEPTH_COMPONENT16, width, height);

2. 上面(1)(2)函式是用於生成render buffer的儲存空間,生成空間之後,則需要將renderbuffer跟framebuffer進行繫結,呼叫glFramebufferRenderbuffer函式進行繫結,後面的繪製才能起作用

3. 接下來可以呼叫OpenGL的函式進行繪製處理,最後則需要呼叫EGALContext的OC方法進行最終的渲染繪製,這裡渲染的是color buffer,這個方法會講buffer渲染到CALayer上面

- (BOOL)presentRenderbuffer:(NSUInteger)target;

4. 還有一個需要注意的地方是在退出的時候,需要呼叫glDelegateFramebuffers或者glDeleteRenderbuffers函式刪除frame buffer或者render buffer

相關推薦

OpenGL學習歸納 -- buffer的使用總結

1. buffer分為frame buffer和render buffer兩大類,其中frame buffer相當於render buffer的管理者,frame buffer object即稱為FB

OpenGL陰影添加學習材料及總結

core mas 總結 https art swe sweet .net 中文 學習材料 PBR基於物理的實時渲染采用了更符合物理學規律的方式來模擬光線,通過模擬虛擬物體表面的粗糙程度,來計算出射該物體的光線呈現一個怎樣的方式。PBR材料的三個主要參數稱為:反照率、粗糙度、

day01(後端實習技能) JDBC知識學習歸納總結

1、JDBC的簡介 JDBC全稱為java database connectivity,是sun公司指定的java資料庫連線技術的簡稱。 SUN公司提供的一種資料庫訪問規則、規範, 由於資料庫種類較多,並且java語言使用比較廣泛,sun公司就提供了一種規範,讓其他的資料庫提供商去實

OpenGL學習總結(一)

OpenGL基礎 一、OpenGL是一個狀態機 OpenGL本身是一個巨大的狀態機,所以程式設計的根本目的使用一些列操作和變數來改變OpenGL的工作狀態,例如:要繪製一個三角形的時候,我們先要告訴它接下來將要繪製三角形,使其切換狀態,然後再將要繪製

學習Java集合總結歸納

Java集合大致分為Set、List、Queue、Map四個體系 其中Set代表無序、不可重複的集合;List代表有序、重複集合;Map代表具有對映關係的集合;Queue是佇列的實現。 集合和陣列不一樣,陣列元素既可以是基本型別的值,也可以是物件(實際上儲存

Spark學習散點總結

python spark 人的 bin == count mic alex ext 使用Spark 時,通常會有兩種模式。一、在交互式編程環境(REPL, a.k.a spark-shell)下實現一些代碼,測試一些功能點。二、像MapReduce 那樣提前編寫好源代碼並編

html學習——基礎分類總結

rect log 內容 sem ron text html pid 頁面 1. html 超文本標記語言HyperText Markup Language。html文檔基本結構: <!DOCTYPE html><head> &

線上學習平臺知識總結

radio public private result sem sql his equal script 1.對象轉換 對象一 var PList1 = from ph in db.Pa_Point_History

Python學習第一周總結(上)

country 增強 括號 需要 src 多核cpu 優勢 統一 5.0 Python基礎知識總結 一、前期了解 1.1解釋型語言和編譯型語言 編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以後執行這個程序的時候,就不用再進行翻譯了。 解釋型語言,是

集成學習算法總結----Boosting和Bagging(轉)

原理 過程 訓練 嚴重 oos 機器學習 ppr 次數 error 1、集成學習概述 1.1 集成學習概述 集成學習在機器學習算法中具有較高的準去率,不足之處就是模型的訓練過程可能比較復雜,效率不是很高。目前接觸較多的集成學習主要有2種:基於Boosting的和基於Bagg

使用php-amqplib連接rabbitMQ 學習筆記及總結

upd echo 密碼 分發 rop 必須 mco fan span 1、使用composer安裝php-amqplib 在你的項目中添加一個 composer.json文件: { "require": { "php-amqplib/php-am

JavaScript學習——JS事件總結

單擊 png 鼠標移動 方式 比較 chang 使用 購物網站 bmi 回顧之前已經使用過的事件 (onsubmit、onclick、onload、onfocus、onblur、onmouseover、onmouseout) onfocus/onblur:聚焦離焦事件,用

機器學習基本概念總結(轉載)

9.png png log images es2017 enter 08-18 機器學習 style 機器學習基本概念總結(轉載)

《機器學習》第三章 決策樹學習 筆記加總結

分類問題 子集 觀察 組成 cas 普通 重復 1.0 需要 《機器學習》第三章 決策樹學習 決策樹學習方法搜索一個完整表示的假設空間,從而避免了受限假設空間的不足。決策樹學習的歸納偏置是優越選擇較小的樹。 3.1.簡介 決策樹學習是一種逼近離散值目標函數的方法,在這種方法

OpenGL學習記錄

tornado http .com tar ado log opengl targe blog 1.QT OpenGL工程建立: http://www.cnblogs.com/tornadomeet/archive/2012/08/22/2651574.htmlOpenGL

學習筆記---buffer和cache的區別

cache一.概念buffer:緩沖區,一個用於存儲速度不同步的設備或優先級不同的設備之間傳輸數據的區域。cache: 緩存,位於CPU與主內存間的一種容量較小但速度很高的存儲器。保存著CPU剛用過或循環使用的一部分數據。二、應用場景buffer:由各種進程分配,被用在輸入隊列等方面。cache: 用在磁盤的

阿裏雲雲計算工程師ACP學習筆記--知識點總結

阿裏雲 acp Elastic Compute Server 是一種處理能力可彈性伸縮的計算服務。 CPU內存需要停機,帶寬不需要。垂直:帶寬 CPU 內存 水平:服務器Region 地域 Zone 可用區安全組, 允許包含跨可用區的實例 磁盤 只能掛在同一可用區

OpenGL學習筆記-頂點輸入

創建 oat ati 數量 class rda sign 學習筆記 不同 1.構造頂點數據,以三角形為例子,float vertices[] = { -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f }; 2.構

Java虛擬機 學習 第二章總結

windows 控制 常量池 永久代 導致 程序 兩個 內存模型 直接內存 Java的內存管理機制JVM運行時的數據區域:程序計數器,Java虛擬機棧,本地方法棧,Java堆,方法區,運行時常量池,(直接內存) 按照線程共享分類:線程獨有   1.程序計數器,占用非常小的

關於學習Linux的總結2

打印機 並且 允許 nbsp restart 項目 map start 系列 一.Linux初始化服務 首先搞清楚四個概念: 進程:正在運行的程序,有自己獨立的內存空間, 線程:是進程的下屬單位,開銷較進程小,沒有自己獨立的內存空間 作業:由一系列進程組成,來完成某