一、概述
Effects框架是一組用于管理著色器程序和渲染狀態(tài)的工具代碼。例如,你可能會(huì)使用不同的effect繪制水、云、金屬物體和動(dòng)畫角色。每個(gè)effect至少要由一個(gè)頂點(diǎn)著色器、一個(gè)像素著色器和渲染狀態(tài)組成。
在Direct3D11中,Effects框架已從D3DX庫(kù)中移除,需要我們自己配置effect庫(kù),配置過(guò)程請(qǐng)參考《Direct3D11學(xué)習(xí):(一)開發(fā)環(huán)境配置》。
上一篇文章介紹了D3D11的繪圖基礎(chǔ)過(guò)程,并繪制了一個(gè)彩色立方體,當(dāng)中使用了Effects框架,只是簡(jiǎn)單的介紹了一下。我們這篇文章來(lái)詳細(xì)講解一下Effects框架。
二、Effects
2.1 effect文件
我們已經(jīng)討論了頂點(diǎn)著色器、像素著色器,并對(duì)幾何著色器、曲面細(xì)分著色器進(jìn)行了簡(jiǎn)要概述。我們還討論了常量緩沖,它可以用于存儲(chǔ)由著色器訪問(wèn)的“全局”變量。這些代碼通常保存在一個(gè)effect文件(.fx)中,它是一個(gè)純文本文件中(就像是C++代碼保存在.h和.cpp文件中一樣)。除了著色器和常量緩沖之外,每個(gè)effect文件至少還要包含一個(gè)technique,而每個(gè)technique至少要包含一個(gè)pass。
1.technique11:一個(gè)technique由一個(gè)或多個(gè)pass組成,用于創(chuàng)建一個(gè)渲染技術(shù)。每個(gè)pass實(shí)現(xiàn)一種不同的幾何體渲染方式,按照某些方式將多個(gè)pass的渲染結(jié)果混合在一起就可以得到我們最終想要的渲染結(jié)果。例如,在地形渲染中我們將使用多通道紋理映射技術(shù)(multi-pass texturing technique)。注意,多通道技術(shù)通常會(huì)占用大量的系統(tǒng)資源,因?yàn)槊總€(gè)pass都要對(duì)幾何體進(jìn)行一次渲染;不過(guò),要實(shí)現(xiàn)某些渲染效果,我們必須使用多通道技術(shù)。
2.pass:一個(gè)pass由一個(gè)頂點(diǎn)著色器、一個(gè)可選的幾何著色器、一個(gè)像素著色器和一些渲染狀態(tài)組成。這些部分定義了pass的幾何體渲染方式。像素著色器也是可選的(很罕見)。例如,若我們只想繪制深度緩沖,不想繪制后臺(tái)緩沖,在這種情況下我們就不需要像素著色器計(jì)算像素的顏色。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26