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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

固定渲染管線與可編程渲染管線

2019-11-08 20:21:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
1.固定渲染管線與可編程渲染管線的區(qū)別:    1)、固定渲染管線 ——這是標(biāo)準(zhǔn)的幾何&光照(T&L)管線,功能是固定的,它控制著世界、視、投影變換及固定光照控制和紋理混合。T&L管線可以被渲染狀態(tài)控制,矩陣,光照和采制參數(shù)。    2)、頂點(diǎn)著色器——圖形開(kāi)發(fā)人員可以對(duì)渲染管線中的頂點(diǎn)運(yùn)算和像素運(yùn)算分別進(jìn)行編程處理了,而無(wú)須象以前那樣套用一些固定函數(shù),取代設(shè)置參數(shù)來(lái)控制管線,最早出現(xiàn)與DX8,包括PS和VS兩部分。2.為了解決D3D或者OpenGL對(duì)不同硬件廠商的支持,解決移植性的問(wèn)題,可以通過(guò)將加速卡功能抽象出來(lái),統(tǒng)一定義接口的形式來(lái)實(shí)現(xiàn)。于是,人們采用了典型的分層模式(設(shè)計(jì)模式),將一套應(yīng)用程序分為3個(gè)層次:    應(yīng)用程序?qū)?-> 硬件抽象層 -> 硬件層其中        應(yīng)用層 就是游戲和應(yīng)用軟件開(kāi)發(fā)人員的開(kāi)發(fā)主體,他們調(diào)用統(tǒng)一的加速卡API來(lái)進(jìn)行上層開(kāi)發(fā),而不用考慮移植性問(wèn)題;        硬件抽象層 則抽象出硬件的加速功能,進(jìn)行有利于應(yīng)用層開(kāi)發(fā)的封裝,并向應(yīng)用層開(kāi)放API;        硬件層 將硬件驅(qū)動(dòng)提供給抽象層,以實(shí)現(xiàn)抽象層加速功能的有效性。    這個(gè)結(jié)構(gòu)有效的將游戲和應(yīng)用程序 與 硬件加速卡隔離開(kāi),這就很好的提升了程序的移植能力。并且,還有一個(gè)好處就是,開(kāi)發(fā)    人員的知識(shí)復(fù)用率得到提高,從而降低了這類軟件的開(kāi)發(fā)門檻。3.3D加速卡的主要功能就是協(xié)助CPU,負(fù)責(zé)將內(nèi)存中的矢量圖像數(shù)據(jù)(頂點(diǎn)集合)進(jìn)行變換、光照計(jì)算、裁剪等操作,最后經(jīng)過(guò)光柵化將圖像呈現(xiàn)給人眼。這個(gè)過(guò)程就叫做渲染    D3D把整個(gè)渲染分為9個(gè)步驟,9個(gè)步驟的組合,就叫做流水線,或者叫 管線 (參閱 設(shè)計(jì)模式 之 流水線模式)。    D3D的渲染管線(Rendering Pipeline):局部坐標(biāo)變換 -> 世界坐標(biāo)變換 ->觀察坐標(biāo)變換->背面消除->光照->裁剪->投影->視口計(jì)算->光柵化。    無(wú)論是固定渲染管線還是可編程管線,都需要經(jīng)過(guò)這九個(gè)步驟:    可編程管線,顧名思義,就是說(shuō)管線中的某些環(huán)節(jié)是可以被控制的。人們可以通過(guò)對(duì)GPU中的著色器進(jìn)行編程的方式,來(lái)控制、管理加速卡的渲染效果。    著色器分為 頂點(diǎn)著色器和像素著色器。        頂點(diǎn)著色器是在進(jìn)行坐標(biāo)變換 和光照計(jì)算時(shí)工作        像素著色器是在光柵化環(huán)節(jié)工作。    人們對(duì)著色器進(jìn)行自定義編程時(shí),這個(gè)流水線就叫做 可編程管線。同時(shí),D3D還提供默認(rèn)的著色器程序,當(dāng)游戲或應(yīng)用程序完全使用默認(rèn)著色器程序時(shí),這個(gè)流水線就叫做 固定管線。4.變換步驟:    在固定管線中,變換分成2個(gè)步驟:        局部坐標(biāo)系到世界坐標(biāo)系 和 世界坐標(biāo)系到觀察坐標(biāo)系。            局部坐標(biāo)系:就是建模坐標(biāo)系,它是在建模時(shí)由3DMAX之類的工具定義的            世界坐標(biāo)系:用來(lái)統(tǒng)一場(chǎng)景中各個(gè)object的位置、尺寸等規(guī)格            觀察坐標(biāo)系:也就是攝像機(jī)的坐標(biāo)系。        局部坐標(biāo)系到世界坐標(biāo)系變換:            這個(gè)變換是為了把在不同建模工具或者有用不同規(guī)格的建模尺寸下設(shè)計(jì)的模型,都統(tǒng)一到一個(gè)通用的坐標(biāo)系下面。這個(gè)動(dòng)作的作用,就像秦始皇統(tǒng)一度量衡一樣。從局部坐標(biāo)系到世界坐標(biāo)系 這個(gè)變換的動(dòng)作,通常是在游戲設(shè)計(jì)時(shí),由 游戲工具(如:場(chǎng)景編輯器)來(lái)預(yù)先計(jì)算,并且為每個(gè)模型都計(jì)算出一個(gè)變換矩陣(即記錄模型在游戲場(chǎng)景中的 大小、朝向、位置),叫做世界坐標(biāo)變換矩陣。在渲染時(shí),實(shí)時(shí)的應(yīng)用這些矩陣來(lái)參與運(yùn)算寫法:       
 D3DXMATRIX worldMatrix; //這個(gè)矩陣就從文件中讀進(jìn)來(lái) Device->SetTransform(D3DTS_WORLD, &worldMatrix); 注意,使用宏 D3DTS_WORLD         從世界坐標(biāo)系到觀察坐標(biāo)系變換:            這個(gè)變換動(dòng)作,實(shí)際上是為了簡(jiǎn)化運(yùn)算而做的。這樣變換之后,所有的頂點(diǎn)也就可以直接轉(zhuǎn)換為向量,非常的便于某些計(jì)算。這個(gè)動(dòng)作通常是,將攝像機(jī)平移到世界坐標(biāo)系原點(diǎn),再旋轉(zhuǎn)攝像師,使它的光軸與世界坐標(biāo)系z(mì)軸方向一致。與此同時(shí),空間中的所有幾何體都要隨攝像機(jī)一同變換,以確保攝像機(jī)的視場(chǎng)不變。這個(gè)變換叫取景變換,變換后得到觀察坐標(biāo)系。寫法如下:            D3DXMATRIX ViewMatrix; D3DXVECTOR3 position, targetPoint, worldUp;            D3DXMatrixLookAtLH(&ViewMatrix, //[OUT], 計(jì)算出的變換矩陣 &position, //攝像機(jī)位置 &targetPoint, //攝像機(jī)的觀察朝向 &worldUp);//攝像機(jī)的y朝向,也就是頭的朝向            Device->SetTransform(D3DTS_VIEW, &ViewMatrix); 注意宏,D3DTS_VIEW        其實(shí),D3DXMatrixLookAtLH()函數(shù)只是類似功能函數(shù)中的一個(gè),注意后綴 LH 這表示左手坐標(biāo)系,對(duì)應(yīng)的還有一個(gè)右手坐標(biāo)系,它們的區(qū)別在于:左手系 其z軸向里為正;右手系向外為正。        D3DXMatrixLookAtLH()函數(shù)解析: The return value for this function is the same value returned in the pOut parameter. In this way, the D3DXMatrixLookAtLH function can be used as a parameter for another function. This function uses the following formula to compute the returned matrix. zaxis = normal(At - Eye) xaxis = normal(cross(Up, zaxis)) yaxis = cross(zaxis, xaxis) xaxis.x yaxis.x zaxis.x 0 xaxis.y yaxis.y zaxis.y 0 xaxis.z yaxis.z zaxis.z 0 -dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) l 5.
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东港市| 英山县| 双辽市| 慈溪市| 崇左市| 壶关县| 钟祥市| 湄潭县| 化德县| 广河县| 大田县| 广州市| 闻喜县| 潜山县| 连云港市| 南木林县| 齐齐哈尔市| 城口县| 涞水县| 香格里拉县| 滨州市| 靖安县| 阿拉善盟| 工布江达县| 安平县| 永川市| 盐源县| 邮箱| 舟山市| 娄底市| 通江县| 上林县| 安岳县| 汤阴县| 新蔡县| 卫辉市| 犍为县| 饶平县| 叶城县| 崇仁县| 西林县|