国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Accumulation Buffer(累積緩存)

2019-11-17 04:48:59
字體:
來源:轉載
供稿:網友
累積緩存是為合成多幅圖像而設計的,它不是簡單的用引入象素片元來代替象素值,而是將片元進行縮放,然后加到已有的象素值上。為了經過一系列的混合操作后能夠保持精度,累積緩存每個顏色分量的位數要比一般的可視化系統要多。
我們可以象其他緩存一樣清空累積緩存,可以用glClearAccum()來設置紅、綠和藍色分量的清空值,按位順序清空累積緩存或以GL_ACCUM_BUFFER_BIT調用glClear()命令。
你不能直接渲染進累積緩存,而是應該渲染到一個選定的緩存,然后用glAccum()來將在那緩存中的當前圖像累積進累積緩存。glAccum()用當前選擇的讀取緩存來拷貝。你可以用glReadBuffer()來設置你想讀取的緩存。
glAccum()有2個參數:op和value。op值可為下面中的一個:
                                                                    表1 glAccum()的op值
op值
動作
GL_ACCUM
從當前選定的緩存中讀取象素(該緩存為了用glReadBuffer()進行讀取而選定,用value乘上R、G、B、A值,然后將結果加到累積緩存中。
GL_LOAD
與GL_ACCUM操作類似,但它是用結果值替換掉累積緩存中的值,而不是與之相加。
GL_RETURN
從累積緩存中取值,以value乘以該值,然后將該結果放入為寫操作而激活的顏色緩存中。
GL_ADD
將value值與累積緩存中的每個象素值的R、G、B、A分量相加
GL_MULT
將value值截取到[-1,1]之間,然后與累積緩存中的每象素的R、G、B、A分量相乘
因為你必須在累積之前渲染到另一個緩存,所以累積圖像典型的方法是,將圖像渲染到后緩存若干次,累積每幅圖像到累積緩存中,當所需的圖像數目已累積后,將內容拷貝回后緩存中,然后交換前后緩存。這樣,只有在最后,才顯示累積的圖像。
下面是累積n幅圖像的一個示例程序:
1.  調用glDrawBuffer(GL_BACK)來只渲染到后緩存;
2.  調用glReadBuffer(GL_BACK),這樣累積緩存將從后緩存讀取。
注重:前2步只有當應用程序已經改變了所選的寫和讀緩存時才需要。若可視化系統是雙緩存,這些選擇是默認的。
3.  調用glClear(bitfield)清空后緩存,然后渲染第1幅圖像;
4.  調用glAccum(GL_LOAD,1.f/n);這答應你避免用分開的步驟來清空累積緩存;

5.  改變你的圖像的參數,再重繪它;
6.  調用glAccum(GL_ACCUM,1.f/n)來將第2幅圖像加到第1幅上;
7.  重復前面2個步驟≥n-2次……
8.  調用glAccum(GL_RETURN,1.f)來將完成的圖像拷貝到后緩存中;
9.  調用glutSwapBuffers()(若使用GLUT)或SwapBuffers()(若使用Win32)來交換前后緩存。
累積緩存提供了一種在保持好的顏色分辨率下實現在場景中“多重曝光(multiple eXPosures)”的方法。使用累積緩存可以產生許多圖像效果來提高圖像的真實性,其中包括:反走樣、運動模糊、軟陰影、深度域(景深)和卷積。要產生這些效果,必須將圖像渲染多次,對場景位置(或所選的物體)進行微小的、漸增的改變,然后累積結果。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 祁阳县| 洛南县| 清流县| 崇左市| 祥云县| 姚安县| 连江县| 江口县| 东阿县| 迁安市| 巴楚县| 长乐市| 凤阳县| 望都县| 琼结县| 金乡县| 彭泽县| 丰原市| 房山区| 黔江区| 长白| 磐安县| 陵水| 夏邑县| 江孜县| 大兴区| 贺兰县| 福海县| 吴忠市| 江陵县| 民权县| 读书| 区。| 台南市| 昭平县| 兴安盟| 左权县| 丰城市| 四平市| 建昌县| 彭泽县|