青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當(dāng)自強(qiáng)而不息

頂點(diǎn)坐標(biāo)變換(1)

空間中的物體需要使用三維坐標(biāo)來描述,而顯示器是一個(gè)二維的表面,所以在屏幕上渲染一個(gè)三維場(chǎng)景時(shí),首先需要將描述空間物體的三維坐標(biāo)變換為二維坐標(biāo)(世界坐標(biāo)到屏幕坐標(biāo)),這在Direct3D中稱為頂點(diǎn)坐標(biāo)變換。頂點(diǎn)坐標(biāo)變換通常通過矩陣來完成。可以把頂點(diǎn)坐標(biāo)變換想象成攝像過程,三維世界的景物通過攝像機(jī)的拍攝顯示在二維的相片上,所不同的是把相片換成了屏幕。

 

頂點(diǎn)坐標(biāo)變換和光照流水線概述

Direct3D中渲染三維對(duì)象的過程可分為兩個(gè)階段。第一階段稱為坐標(biāo)變換和光照(Transforming and Lighting T&L)階段。在這個(gè)階段,每個(gè)對(duì)象的頂點(diǎn)被從一個(gè)抽象的、浮點(diǎn)坐標(biāo)空間轉(zhuǎn)換到基于像素的屏幕空間(坐標(biāo)變換不僅包含物體頂點(diǎn)位置的坐標(biāo)變換,它還可能包含頂點(diǎn)法線、紋理坐標(biāo)等的坐標(biāo)變換),并根據(jù)場(chǎng)景中光源和物體表面的材質(zhì)對(duì)物體頂點(diǎn)應(yīng)用不同類型的光照效果。還有其他一些比較重要的任務(wù),如裁剪和視口縮放也在第一階段進(jìn)行。第二階段稱為光柵化處理階段,Direct3D將經(jīng)過T&L處理的頂點(diǎn)組織以點(diǎn)、線、面為基礎(chǔ)的圖元,應(yīng)用紋理貼圖和物體頂點(diǎn)的顏色屬性,根據(jù)相應(yīng)渲染狀態(tài)設(shè)置(如著色模式),決定每個(gè)像素的最終顏色值,并在屏幕上顯示出來。

有時(shí)根據(jù)特殊的需要,可以跳過其中的某些步驟。如果愿意,也可以提供自己的坐標(biāo)變換和光照過程,并將處理后的頂點(diǎn)直接傳給Direct3D光柵化處理程序,而繞過Direct3D的T&L階段。

T&L的過程在Direct3D中通常稱為頂點(diǎn)變換流水線,在這個(gè)過程中,未經(jīng)過變換和光照的頂點(diǎn)從一端進(jìn)入,在內(nèi)部這些頂點(diǎn)將完成幾個(gè)連續(xù)操作,然后經(jīng)過轉(zhuǎn)換和光照的頂點(diǎn)從另一端出來。應(yīng)用程序通過指定幾個(gè)矩陣、視口以及所使用的光線來建立T&L流水線,然后應(yīng)用程序?qū)㈨旤c(diǎn)送入流水線,對(duì)這些頂點(diǎn)進(jìn)行變換、照明和裁剪,將其投影到屏幕空間,并根據(jù)視口的規(guī)定對(duì)其進(jìn)行縮放。我們認(rèn)為經(jīng)過流水線的頂點(diǎn)是已經(jīng)經(jīng)過處理的,并且已經(jīng)準(zhǔn)備好傳送給光柵化處理程序。

下面首先介紹T&L流水線涉及到的一些基本概念:

(1)世界變換和世界坐標(biāo)系:物體在三維空間的運(yùn)動(dòng)和變形過程稱為世界變換,如平移、旋轉(zhuǎn)、縮放等。物體在其中運(yùn)動(dòng)的三維空間稱為世界空間,它的三維坐標(biāo)系表示稱為世界坐標(biāo)系,物體頂點(diǎn)在世界坐標(biāo)系里的坐標(biāo)變換稱為世界變換。

(2)取景變換和觀察坐標(biāo)系:把圖形顯示想象成攝像過程,取景變換就像攝像機(jī)中攝像機(jī)的擺放一樣,在三維圖形顯示中,需要設(shè)置一個(gè)虛擬攝像機(jī),屏幕顯示的圖形就是虛擬攝像機(jī)拍攝在膠片上的景物。以攝像機(jī)位置為參考原點(diǎn),攝像機(jī)觀察的方向?yàn)樽鴺?biāo)軸,建立的坐標(biāo)系稱為觀察坐標(biāo)系,物體在觀察坐標(biāo)系中的相對(duì)坐標(biāo)稱為觀察坐標(biāo),頂點(diǎn)從世界坐標(biāo)到觀察坐標(biāo)的轉(zhuǎn)換稱為取景變換。

(3)投影坐標(biāo)和投影坐標(biāo)系:物體從世界坐標(biāo)描述轉(zhuǎn)換到觀察坐標(biāo)后,可將三維物體投影到二維表面上,即投影到虛擬攝像機(jī)的膠片上,這個(gè)過程就是投影變換。以膠片中心為參考原點(diǎn)的空間坐標(biāo)系稱為投影坐標(biāo)系,物體在投影坐標(biāo)系中的坐標(biāo)稱為投影坐標(biāo)。

(4)視區(qū)變換和屏幕坐標(biāo)系:物體在投影坐標(biāo)系中的表示為浮點(diǎn)坐標(biāo),通過定義屏幕顯示區(qū)域(一般為顯示窗口大小),將浮點(diǎn)坐標(biāo)轉(zhuǎn)化為像素坐標(biāo)的過程稱為視區(qū)變換,該像素坐標(biāo)值稱為屏幕坐標(biāo)。例如,如果定義視區(qū)大小為寬640像素、高480像素,那么投影坐標(biāo)(1.0f, 0.5f)經(jīng)過視區(qū)變換后的屏幕坐標(biāo)為(640, 240),如果定義視區(qū)大小為寬1024像素、高800像素,經(jīng)過視區(qū)變換后的屏幕坐標(biāo)為(1204, 400)。

世界空間的三維物體頂點(diǎn)坐標(biāo)經(jīng)過世界變換、取景變換、投影變換和視區(qū)變換,轉(zhuǎn)化為以像素為單位的屏幕坐標(biāo),就可以進(jìn)行光柵化顯示了。在Direct3D程序中,只要定義并設(shè)置好相應(yīng)的變換矩陣和視區(qū)信息,即構(gòu)建好T&L流水線,剩余的各種頂點(diǎn)變換操作由Direct3D自動(dòng)完成。

 IDirect3DDevice9::SetTransform()函數(shù)用來設(shè)置頂點(diǎn)變換矩陣,該函數(shù)的聲明如下:

Sets a single device transformation-related state.

HRESULT SetTransform(
D3DTRANSFORMSTATETYPE State,
CONST D3DMATRIX * pMatrix
);

Parameters

State
[in] Device-state variable that is being modified. This parameter can be any member of the D3DTRANSFORMSTATETYPE enumerated type, or the D3DTS_WORLDMATRIX macro.
pMatrix
[in] Pointer to a D3DMATRIX structure that modifies the current transformation.

Return Values

If the method succeeds, the return value is D3D_OK. D3DERR_INVALIDCALL is returned if one of the arguments is invalid.

D3DTRANSFORMSTATETYPE

Defines constants that describe transformation state values.

typedef enum D3DTRANSFORMSTATETYPE
{
D3DTS_VIEW = 2,
D3DTS_PROJECTION = 3,
D3DTS_TEXTURE0 = 16,
D3DTS_TEXTURE1 = 17,
D3DTS_TEXTURE2 = 18,
D3DTS_TEXTURE3 = 19,
D3DTS_TEXTURE4 = 20,
D3DTS_TEXTURE5 = 21,
D3DTS_TEXTURE6 = 22,
D3DTS_TEXTURE7 = 23,
D3DTS_FORCE_DWORD = 0x7fffffff,
} D3DTRANSFORMSTATETYPE, *LPD3DTRANSFORMSTATETYPE;

Constants

D3DTS_VIEW
Identifies the transformation matrix being set as the view transformation matrix. The default value is NULL (the identity matrix).
D3DTS_PROJECTION
Identifies the transformation matrix being set as the projection transformation matrix. The default value is NULL (the identity matrix).
D3DTS_TEXTURE0
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_TEXTURE1
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_TEXTURE2
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_TEXTURE3
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_TEXTURE4
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_TEXTURE5
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_TEXTURE6
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_TEXTURE7
Identifies the transformation matrix being set for the specified texture stage.
D3DTS_FORCE_DWORD
Forces this enumeration to compile to 32 bits in size. Without this value, some compilers would allow this enumeration to compile to a size other than 32 bits. This value is not used.

Remarks

The transform states in the range 256 through 511 are reserved to store up to 256 world matrices that can be indexed using the D3DTS_WORLDMATRIX and D3DTS_WORLD macros.

Macros  
D3DTS_WORLD Equivalent to D3DTS_WORLDMATRIX(0).
D3DTS_WORLDMATRIX (index) Identifies the transform matrix to set for the world matrix at index. Multiple world matrices are used only for vertex blending. Otherwise only D3DTS_WORLD is used.


IDirect3DDevice9::SetViewport()函數(shù)用來設(shè)置視區(qū)信息,該函數(shù)聲明如下:

Sets the viewport parameters for the device.

HRESULT SetViewport(
CONST D3DVIEWPORT9 * pViewport
);

Parameters

pViewport
[in] Pointer to a D3DVIEWPORT9 structure, specifying the viewport parameters to set.

Return Values

If the method succeeds, the return value is D3D_OK. If the method fails, it will return D3DERR_INVALIDCALL. This will happen if pViewport is invalid, or if pViewport describes a region that cannot exist within the render target surface.

Remarks

Direct3D sets the following default values for the viewport.

D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = RenderTarget.Width;
vp.Height = RenderTarget.Height;
vp.MinZ = 0.0f;
vp.MaxZ = 1.0f;

IDirect3DDevice9::SetViewport can be used to draw on part of the screen. Make sure to call it before any geometry is drawn so the viewport settings will take effect.

To draw multiple views within a scene, repeat the IDirect3DDevice9::SetViewport and draw geometry sequence for each view.


posted on 2008-05-02 09:35 lovedday 閱讀(2477) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品久久久蜜桃| 久久激情五月丁香伊人| 欧美99在线视频观看| 一区二区三区国产精华| 美女精品视频一区| 精品999日本| 欧美专区一区二区三区| 亚洲一区二区三区乱码aⅴ| 欧美日韩专区| 亚洲一级片在线观看| 99riav久久精品riav| 欧美日韩一区二区三区四区在线观看| 亚洲国产乱码最新视频| 欧美freesex8一10精品| 久久影视三级福利片| 亚洲福利视频免费观看| 欧美大尺度在线| 蘑菇福利视频一区播放| 亚洲精品乱码| 亚洲人成久久| 欧美视频专区一二在线观看| 亚洲男人的天堂在线| 亚洲欧美区自拍先锋| 国产亚洲制服色| 免费日韩视频| 欧美日韩国产欧| 性欧美videos另类喷潮| 久久精品亚洲一区二区三区浴池| 亚洲成色www8888| 亚洲精美视频| 国产精品综合av一区二区国产馆| 久久久久久久综合| 久久资源在线| 亚洲一区二区久久| 性欧美大战久久久久久久免费观看| 国精品一区二区| 亚洲国产成人av在线| 国产精品成人一区二区网站软件 | 久久精品亚洲精品国产欧美kt∨| 久久国产欧美日韩精品| 亚洲人成人一区二区三区| 亚洲天堂视频在线观看| 影音先锋久久久| 99国产欧美久久久精品| 国产有码一区二区| 亚洲日本va午夜在线影院| 国产精品试看| 久久精品国产欧美激情| 欧美77777| 亚洲综合视频在线| 久久亚洲精品一区二区| 亚洲天堂黄色| 久久综合九色综合网站| 午夜精品视频一区| 欧美国产日产韩国视频| 久久精品在线观看| 欧美亚洲成人精品| 欧美成人精品在线视频| 欧美午夜精品理论片a级大开眼界| 久久蜜桃精品| 国产精品久久久久久一区二区三区| 免费观看欧美在线视频的网站| 国产精品国产三级国产aⅴ9色 | 欧美精品日韩| 老司机免费视频一区二区| 国产精品久久久久9999高清| 91久久国产综合久久蜜月精品| 国产欧美在线播放| 一区二区三区www| 亚洲毛片在线观看| 久久全国免费视频| 久久精品99国产精品酒店日本| 欧美涩涩视频| 亚洲精品一区二区在线观看| 亚洲二区在线视频| 久久色中文字幕| 久久久噜噜噜久久久| 国产欧美精品一区二区三区介绍 | 国产一区二区三区四区hd| 亚洲视频精选| 亚洲一级特黄| 国产精品wwwwww| 一本色道久久综合亚洲精品按摩| 亚洲精品婷婷| 欧美激情久久久久| 最新高清无码专区| 99精品国产热久久91蜜凸| 欧美高清视频www夜色资源网| 欧美激情成人在线视频| 亚洲电影欧美电影有声小说| 欧美制服丝袜第一页| 久久精品亚洲| 在线观看成人av| 久久资源av| 欧美黄在线观看| 日韩亚洲欧美综合| 欧美片在线播放| 99精品国产在热久久下载| 亚洲午夜小视频| 国产精品卡一卡二| 欧美一区二区在线| 欧美/亚洲一区| 亚洲人成网站在线播| 欧美久久综合| 国产精品99久久99久久久二8 | 在线亚洲观看| 国产精品久久久久7777婷婷| 亚洲自啪免费| 麻豆久久精品| 性一交一乱一区二区洋洋av| 国产精品国产成人国产三级| 99国产欧美久久久精品| 亚洲素人在线| 国产精品手机在线| 久久久人成影片一区二区三区观看 | 欧美日韩国产专区| 一本色道久久综合狠狠躁篇的优点 | 国产精品久久久久婷婷| 午夜一区不卡| 欧美高清在线视频观看不卡| 亚洲激情成人| 国产精品久久久一区二区| 久久久.com| 日韩视频专区| 久久久噜噜噜久久人人看| 亚洲激情网站免费观看| 国产精品久久91| 久久一区激情| 亚洲尤物视频在线| 亚洲电影免费观看高清完整版| 9l视频自拍蝌蚪9l视频成人| 国产精品资源在线观看| 免费一级欧美在线大片| 亚洲视频免费| 亚洲电影第三页| 欧美专区在线| 在线亚洲欧美| 一区二区亚洲| 欧美深夜影院| 欧美成人综合在线| 午夜亚洲福利| 日韩视频在线观看国产| 美日韩精品免费观看视频| 亚洲一区二区精品视频| 亚洲国产精品传媒在线观看| 国产欧美日韩在线观看| 欧美日韩精品久久久| 久久久久久久一区二区| 亚洲一区视频在线| 亚洲狼人精品一区二区三区| 麻豆精品91| 久久国产66| 午夜精品久久久久久久久久久| 日韩网站在线观看| 亚洲黄色在线看| 1204国产成人精品视频| 国产午夜精品久久久久久免费视| 欧美色精品在线视频| 欧美国产日韩一二三区| 蜜臀久久99精品久久久久久9| 欧美在线视频一区| 午夜精品一区二区三区在线播放| 欧美激情影院| 亚洲电影在线| 亚洲国产黄色| 亚洲三级视频| 一本色道久久88综合日韩精品| 91久久久亚洲精品| 亚洲国产成人久久综合一区| 美女精品一区| 欧美xart系列在线观看| 欧美1区2区3区| 欧美岛国激情| 亚洲激情视频网站| 亚洲精品欧洲| 亚洲美女中文字幕| 亚洲精品一二| 极品尤物一区二区三区| 国产伦精品一区二区三区| 欧美成人午夜| 久久躁狠狠躁夜夜爽| 久久综合给合久久狠狠色 | 欧美一区=区| 午夜精品国产更新| 欧美一区二区三区免费大片| 午夜亚洲精品| 久久精品亚洲乱码伦伦中文| 久久久久国内| 欧美国产日产韩国视频| 亚洲国产精品国自产拍av秋霞| 亚洲国产高清在线观看视频| 亚洲欧洲精品一区二区三区| 日韩午夜av| 亚洲欧美日韩专区| 久久成人精品| 欧美成人中文字幕| 国产精品成人一区| 国产日韩欧美亚洲一区| 国内久久婷婷综合| 亚洲精品专区|