版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Di r ec t 3D 應(yīng)用中的2D應(yīng)用Direct3D 應(yīng)用中的 2D 應(yīng)用2D Application 收藏 (轉(zhuǎn)載 )2D Application這一章將討論 IDirect3DDevices9 接口怎樣應(yīng)用到簡(jiǎn)單的兩維應(yīng)用程序里去。然而,接下來討論的方法和接口的方法不僅僅只應(yīng)用在兩維應(yīng)用程序里面。開始我們將看看 IDirect3DSurface9 接口,它用于存放像素?cái)?shù)據(jù)。我們將看看怎樣創(chuàng)建 surfaces,怎樣填充數(shù)據(jù),并且執(zhí)行像素拷貝操作。接下來,我們討論IDirect3DSwapChain9 接口管理 backbuffer 集合。設(shè)備創(chuàng)建的時(shí)候都會(huì)攜帶一個(gè)默認(rèn)的 swap c
2、hain,但是也可以為 window 模式下多個(gè)視圖創(chuàng)建新的swap chain。再接下來,我們將討論 Presentation, Present 也是 IDirect3DDevice9 提供的方法。即使 Direct3D 可以不使用GDI ,但是他們也要處理發(fā)送到應(yīng)用程序 top-level 窗口的消息。我們推薦使用Direct3D 應(yīng)用程序來處理窗口消息。DirectX 并沒有提供直接方法來將GDI 和 Direct3D 結(jié)合起來。但是,通常是在內(nèi)存DC 和流水線產(chǎn)生的結(jié)果像素?cái)?shù)據(jù)上執(zhí)行GDI 操作。最后,我們將討論流水線的Video scan out 部分以及 swapchain 從 b
3、ack buffer 到 front back 的過程。 video scan out 電流讀取數(shù)據(jù),使用cursor overlay,gamma 校正以及像素?cái)?shù)據(jù)轉(zhuǎn)化成 monitor 的模擬信號(hào)。 Pixel SurfacePixel 面是像素?cái)?shù)據(jù)的矩形集合。像素?cái)?shù)據(jù)的內(nèi)存 layout 是通過 D3DFORMAT 定義的。在設(shè)備上使用 surface 有幾處地方: back buffer surfaces, depth/stencil buffer surfaces ,紋理層 surface,render target surface 以及圖片 surface。Direct3D使用IDi
4、rect3DSurface9接口表示一個(gè)surface,CreateOffscreenPlainsurface方法可以創(chuàng)建一個(gè)圖片surface,它能存在于scrath 內(nèi)存池,系統(tǒng)內(nèi)存池和設(shè)備內(nèi)存池。CreateDepthStencilSurface 和 CreateRenderTarget 分別返回depth/stencil 的 surface 和 rendertarget 的 surface。一個(gè) plain surface 可能不是 3D 渲染的目標(biāo),但是你能在plain surface 和其他 surface 之間進(jìn)行數(shù)據(jù)拷貝。HRESULT CreateOffscreenPlain
5、Surface(UINT width,UINT height,D3DFORMAT format,D3DPOOL pool,IDirect3DSurface9 * result,HANDLE * unused);如果設(shè)備不支持被請(qǐng)求面的各式,CreateOffscreenPlainSurface 將會(huì)失敗,或者是系統(tǒng)內(nèi)存里面沒有足夠的存儲(chǔ)空間。使用CheckDeviceFormat 可以用來預(yù)先檢查設(shè)備是否支持某種格式的 surface。interface IDirect3DSurface9 : IDirect3DResource9HRESULT GetContainer(REFIID cont
6、ainer_iid, void * value);HRESULT GetDC(HDC *value);HRESULT GetDesc(D3DSURFACE_DESC * value);HRESULT LockRect(D3DLOCKED_RECT *data, constRECT * locked_region,DWORD flags);HRESULT Release(HDC context);HRESULT UnlockRect(); 對(duì)于 CreateOffscreenPlainSurface 創(chuàng)建的 surface,當(dāng)container_iid 是 IID_Direct3DDevice9
7、時(shí), GetContainer 將返回成功。 GetDESC 將返回 D3DSURFACE_DESC 結(jié)構(gòu)體里面的像素?cái)?shù)據(jù)的描述信息。typedef struct _D3DSURFACE_DESCD3DFORMAT Format;D3DRESOURCETYPE Type;DWORD Usage;D3DPOOL Pool;D3DMULTISAMPLE_TYPE MultiSampleType;/與rendertarget surface 一起使用的multisamplingDWORD MultiSampleQuality;UINT Width;UINT Height; D3DSURFACE_DE
8、SC;Accessing Surface Pixel Data為了獲取surface的像素?cái)?shù)據(jù),我們需要使用LockRect和UnlockRect方法。當(dāng)lockRect方法的locked_region不為NULL的時(shí)候,就只lock住了surface的某個(gè)局部。參數(shù)flags告訴Direct3D一旦surface 被鎖住,數(shù)據(jù)將怎么辦。Flags 包括 D3DLOCK_DISCARD, D3DLOCK_DONOTWAIT,D3DLOCK_NO_DIRTY_UPDATE,D3DLOCK_NOSYSLOCK, D3DLOCK_READONLY 。 D3DLOCK_DISCARD 通知 runti
9、me 整個(gè) locked 區(qū)域?qū)⒅槐粚懭攵蛔x取。使用 discard flag, runtime 不會(huì)提供一份 surface 數(shù)據(jù)的 copy 給應(yīng)用程序讀取。不使用 discard flag,runtime 可能被迫停掉所有未決的操作,然后再返回一個(gè)surface 數(shù)據(jù)的 copy 給應(yīng)用程序。注意:這個(gè) flag 不能使用在子區(qū)域。D3DLOCK_DONOTWAIT決定當(dāng)lock的時(shí)候不會(huì)阻塞住runtime ,等待未決的渲染操作完成。如果lock調(diào)用已經(jīng)阻塞了,它將返回D3DERR_WASSTILLDRAWING。Direct3D為每個(gè)可管理的surface(注意這里只能是manag
10、edsurface)維護(hù)一個(gè)dirty區(qū)域表,用來最小化unlock數(shù)據(jù)的拷貝量。如果已經(jīng)是使用了D3D_NO_DIRTY_UPDATE,locked 區(qū)域?qū)⒉粫?huì)影響dirty 區(qū)域 list 。使用D3DLOCK_READONLY,應(yīng)用程序保證對(duì)鎖定區(qū)域沒有任何的寫操作。D3DLOCK_NOSYSLOCK只只能應(yīng)用到video memory 的 surfaces。為了阻止video 存儲(chǔ)資源被鎖時(shí)設(shè)備 lost,Direct3D 獲取系統(tǒng)critical section 來阻止設(shè)備丟失。它也能阻塞操作系統(tǒng)的其他部分執(zhí)行,這樣勢(shì)必會(huì)影響系統(tǒng)的交互和反應(yīng)靈敏度。D3DLOCK_NOSYSLOCK
11、禁止獲取系統(tǒng)的critical section 。LockRect 方法返回D3DLOCKED_RECT結(jié)構(gòu)體,它定義了surface 的像素?cái)?shù)據(jù)。它保證了surface 數(shù)據(jù)在 sanline 上是連續(xù)的。typedefstruct _D3DLOCKED_RECTint pitch; / 定義了相鄰兩個(gè)scanlines 的距離。void *pBits; / 像素?cái)?shù)據(jù)的指針。D3DLOCKED_RECT;當(dāng)遍歷 surface 的每個(gè)像素時(shí),pitch和像素的大小是很重要的。像素?cái)?shù)據(jù)的大小是跟 D3DFORMAT 有關(guān)。IDirect3DSurface9 并沒有提供方法用于從圖片裝載到 su
12、rface, 或者像素格式轉(zhuǎn)換, D3DX 卻提供了很多這樣的操作方法。Using GDI On a SurfaceGDI 提供 GetDC 和 ReleaseDC 方法來操作與 GDI 兼容格式的 surface。與 GDI 兼容格式包括D3DFMT_R5G6B5,D3DFMT_X1R5G5B5,D3DFMT_R8G8B8和 D3DFMT_X8R8G8B8 。GDI device context 可以使用 GDI執(zhí)行基于 surface 的渲染操作 ,然后立刻釋放。一旦devicecontext被創(chuàng)建,就會(huì)在Direct3D runtime里面建立一個(gè)lock 。 這個(gè)lock保證runti
13、me并不直接跟GDI rendering交互。因?yàn)檫@個(gè)lock 的存在,應(yīng)用程序應(yīng)該盡可能快的釋放GDI device context 。而且, 只有 device context 釋放以后,下面表里的方法才能調(diào)用。InterfaceMethodIDirect3DCubeTexture9LockRectIDirect3DDevice9ColorFillPresentStretchRectUpdateSurfaceUpdateTextureIDirect3DSurface9LockRectIDirect3DSwapChain9PresentIDirect3DTexture9LockRectSwa
14、p Chain每個(gè)設(shè)備都包含一組默認(rèn)的swap chains。GetNumberOfSwapChains 返回設(shè)備swap chains 的數(shù)目。GetSwapChain 方法返回默認(rèn)swap chain 集合里的swap chain的接口。默認(rèn) swap chain 集合的屬性定義在D3DPRESENT_PARAMETERS。Swap chain 由 1 個(gè), 2 個(gè),3 個(gè) back buffer surface 和一個(gè) front buffer surface 。 frontbuffer surface 不能直接訪問,但是它仍然參與到swap chain的 presentation 過程
15、中。 當(dāng)調(diào)用 Present 時(shí) back buffer surface顯示在 monitor 。 exclusive 模式的設(shè)備使用它默認(rèn)的backbuffer 。window 模式的設(shè)備可以使用多個(gè)swap chain,每個(gè)都可以將渲染結(jié)果繪制它自己的窗口。exclusive 模式的adapter group 設(shè)備也可以渲染到多個(gè)monitor 。CreateAdditionalSwapChain 創(chuàng)建一個(gè)基于D3DPRESENT_PARAMETERS的 swap chain,然后返回一個(gè) IDirect3DSwapChain9 接口。注意一個(gè) Swap chain 只能包含 back b
16、uffer surface 而不是 depth/stencil surface。HRESULTCreateAdditionalSwapChain(D3DPRESENT_PARAMETERS* params, IDirect3DSwapChain9 * result);interface IDirect3DSwapChain9 : IUnknownHRESULT GetBackBuffer(UINT buffer, D3DBACKBUFFER_TYPE kind, IDirect3DSurface9 * value);HRESULT GetDevice(IDirect3DDevice9 * va
17、lue);HRESULT GetDisplayMode(D3DDISPLAYMODE * value);HRESULT GetFrontBufferData(IDirect3DSurface9 * destination);HRESULTGetPresentParameters(D3DPRESENT_PARAMETERS *value);HRESULT GetRasterStatus(D3DRASTER_STATUS * value);HRESULT Present(CONST RECT * source, CONST RECT * destination, HWND override, CO
18、NST RGNDATA * dirty_region, DWORD flags); GetBackBuffer 返回一個(gè) back buffer surface 的接口指針。 back buffer 序號(hào)以 0 開始, present 首先顯示是 backbuffer 0 里面的內(nèi)容,然后再是back buffer 1 , 依此下去.。 D3DBACKBUFFER_TYPE定義了 back buffer 的類型。 DirecX 9.0c 并不支持 stereo 渲染, kind 只能是D3DBACKBUFFERTYPE_MONO.typedef enum _D3DBACKBUFFER_TYPE
19、D3DBACKBUFFER_TYPE_MONO = 0,D3DBACKBUFFER_TYPE_LEFT = 1,D3DBACKBUFFER_TYPE_RIGHT = 2D3DBACKBUFFER_TYPE;Present跟 device 的 Present方法一樣,都執(zhí)行同樣的功能。flag 的值包括D3DPRESENT_DONOTWAIT和D3DPRESENT_LINEAR_CONTENT。D3DPRESENT_DONOTWAIT表示如果presentation 引起應(yīng)用程序阻塞,它將立刻返回D3DERR_WASSTILLDRAWING。D3DPRESENT_LINEAR_CONTENT告訴
20、設(shè)備 presentation時(shí)源區(qū)域像素應(yīng)該從線性顏色空間轉(zhuǎn)化到sRGB 顏色空間。Presentation當(dāng)調(diào)用了 Present 后, back buffer 的內(nèi)容將會(huì)被復(fù)制到front buffer , video scan out 電流讀取 front buffer 的像素把他們顯示在 monitor 上。如果 D3DCAPS9:DevCaps 的 D3DDEVCAPS_CANRENDERAFTERFLIP 被設(shè)置, present發(fā)生以后設(shè)備將繼續(xù)queue 渲染命令,也就是在設(shè)備與CPU 之間有更多的并發(fā),當(dāng)前幀渲染的時(shí)候,下一幀已經(jīng)queue。但是一個(gè)設(shè)備 queue 的幀數(shù)
21、最多不能超過兩幀。 #define D3DDEVCAPS_CANRENDERAFTERFLIP 0x000000800LHRESULT Present(const RECT * source_rect, const RECT* dest_rect,HWND override_window, const RGNDATA * dirty_region);Present對(duì) Swap chain 的行為使用D3DPRESENT_PARAMETERS的 SwapEffect 定義的。typedef enum _D3DSWAPEFFECTD3DSWAPEFFECT_DISCARD = 1,D3DSWAPE
22、FFECT_FLIP = 2,D3DSWAPEFFECT_COPY = 3 D3DSWAPEFFECT; 在 window 模式下面,所有的 swap effec 都是通過拷貝操作實(shí)現(xiàn)的。使用最近時(shí)間間隔創(chuàng)建的swap chain 并不能讓monitor 的垂直掃描與拷貝操作同步??截惒僮鬟\(yùn)行在在Video scan out 過程中,這樣導(dǎo)致了artifacts ,也稱作圖像tearing。為了避免這種artifacts ,我們需要同步video scan out 與拷貝操作,以便于當(dāng)video beam還停留在拷貝操作的目的地時(shí),不能有拷貝操作發(fā)生。如果顯卡并不支持video beam 位置
23、信息,拷貝操作將會(huì)立刻發(fā)生。在 exclusive 模式下, presentation 的頻率是由D3DPRESENT_PARAMETERS的FullScreen_PresentationInterval 指定的。默認(rèn)的presentationinverval 對(duì)應(yīng) adapter 視頻模式的刷新率。如果dest_window 不是空, dest_window 客戶端區(qū)域就是present的 Target。如果 dest_window 空而D3DPRESENT_PARAMETERS的 hDeviceWindow 不空,則hDeviceWindow 就是 present 的 Target。 如果
24、兩者都空, CreateDevice 的 focus_window 參數(shù)將是 present 的 target。 source 和 dest 只能應(yīng)用到拷貝操作方式, Flip 和 Discard 這兩個(gè)參數(shù)必須是空??罩当硎菊麄€(gè)source surface 和目的surface。 dirty_region 也只能使用在拷貝操作下。 Lost Devices and ResetTestCooperativelevel 檢查設(shè)備的狀態(tài),Reset重啟設(shè)備。HRESULT Reset(D3DPRESENT_PARAMETERS * params);HRESULT TestCooperativeLe
25、vel();Video Scan outfront buffer 的內(nèi)容來自于 Present。GetDisplayMode 返回了當(dāng)前 front buffer 的顯示模式。應(yīng)用程序不能直接訪問 front buffer ,但是可以通過 GetFrontBufferData 返回一份 front buffer 的拷貝。 GetFrontBufferData 的 destination 參數(shù)必須是一個(gè)存在的 surface,它的維度等于 adapter 當(dāng)前顯示模式,并且像素格式是D3DFMT_A8R8G8B8。在拷貝過程中數(shù)據(jù)將從adapter 的顯示模式格式轉(zhuǎn)化成surface 格式。HR
26、ESULT GetDisplayMode(D3DDISPLAYMODE * value);HRESULT GetFrontBufferData(IDirect3DSurface*destination);如果 D3DCAPS:Caps 的D3DCAPS_READ_SCANLINE位被設(shè)置,設(shè)備將它的videoscan out scanline 和垂直 blank 狀態(tài)。GetRasterStatus將使用 D3DRASTER_STATUS 結(jié)構(gòu)體返回 video scan out 狀態(tài)。 scanline 成員指定了 rater beam 的當(dāng)前位置, 0 是最頂端的 scanline。如果是
27、自下而上的垂直掃描, InVBlank 成員將為 TRUE 。HRESULT GetRasterStatus(D3DRASTER_STATUS * value);typedef struct _D3DRASTER_STATUSBOOLInVBlank;UINTScanline; D3DRASTER_STATUS;·Cursor在 exclusive 模式下, Direct3D 管理著 cursor 的顯示。在video scan out 的過程中硬件Cursor 可能會(huì)取代cursor 圖像。如果硬件cursor 不可用, runtime 會(huì)提供一個(gè)軟件cursor 對(duì) front
28、buffer 讀,修改,寫操作。在window 模式下,應(yīng)用程序可能會(huì)使用GDI cursor 或者 Direct3D cursor 。Direct3D cursor 能通過方法ShowCursor 顯示或者隱藏cursor。ShowCursor 并不返回HRESULT, 而是 cursor 的上一個(gè)隱藏狀態(tài)。如果它是前是可見的。BOOLTRUE,cursor 在調(diào)用 ShowCursorShowCursor(BOOL Show);之voidSetCursorPosition(UINT x, UINT y, DWORD flags);HRESULT SetCursorProperties(UI
29、NT hot_spot_x, UINT hot_spot_y, IDirect3DSurface9 * image);cursor 的位置是通過SetCursorPosition 設(shè)定的, flags 參數(shù)·Gamma Ramp在 exclusive 模式下,應(yīng)用 cursor 以后, 在進(jìn)行 A/D 轉(zhuǎn)換之前將會(huì)對(duì)像素?cái)?shù)據(jù)應(yīng)用 Gamma 校正。在窗口模式下,應(yīng)用程序也能使用 GDI 來做 Gamma 校正。如果D3DCAPS9:Caps 的 D3DCAPS2_FULLSCREENGAMMA設(shè)置,設(shè)備將會(huì)支持exclusive 的 Gamma Ramp。GetGammaRamp 能
30、讀取 Gamma Ramp 的屬性,它返回一個(gè) Gamma Ramp 的結(jié)構(gòu)體。void GetGammaRamp(D3DGAMMARAMP * value);void SetGammaRamp(DWORD Flags, const D3DGAMMARAMP * value);typedef struct _D3DGAMMARAMPWORD red256;WORD green256;WORD blue256; D3DGAMARAMP;Gamma ramp屬性通過SetGammaRamp 進(jìn)行設(shè)置,并且它能夠立刻產(chǎn)生反應(yīng)。Flags 參數(shù)表示設(shè)備是否使用ramp 的 calibration ,它
31、包括D3DSGR_NO_CALIBRATION和 D3DSGR_CALIBRATE。如果 D3DCAPS9:Caps2 的D3DCAPS2_CANCALIBRATEGAMMA位設(shè)置,設(shè)備將能夠給 Gamma Ramp 指定一個(gè) calibration 。下面例子顯示了怎樣計(jì)算ramp values。 voidcompute_ramp(D3DGAMARAMP & ramp, float gamma)for (UINT i = 0;i< 256;i+)const WORD val = static_cast<int> (65535 * po
32、w(i/255.f, 1.f/gamma);ramp.redi = val;ramp.greeni = val;ramp.bluei = val;2D Pixel Copies如果我們申請(qǐng)可鎖住的back buffer ,我們能鎖住backbuffer 的矩形區(qū)域,然后使用軟件直接對(duì)它讀寫操作。然而, back buffer surface 是 video memory 的設(shè)備 surface。通過 CPU 訪問 video memory 將是一個(gè)昂貴的操作,我們應(yīng)該避免。 但是存放系統(tǒng)內(nèi)存池或者 scratch 內(nèi)存池的圖像surface 能輕松的被CPU 訪問??截愊袼夭僮饕话惆ǎ涸O(shè)備內(nèi)
33、存到設(shè)備內(nèi)存,系統(tǒng)內(nèi)存到設(shè)備內(nèi)存,設(shè)備內(nèi)存到系統(tǒng)內(nèi)存。 StetchRect 能有效的進(jìn)行設(shè)備內(nèi)存之前的拷貝。UpdateSurface 和 UpdateTexture 一般都是將數(shù)據(jù)從系統(tǒng)內(nèi)存轉(zhuǎn)移到設(shè)備內(nèi)存里面。GetRenderTargetData 用于從設(shè)備內(nèi)存將像素?cái)?shù)據(jù)轉(zhuǎn)移到系統(tǒng)內(nèi)存。當(dāng)你想要在設(shè)備資源直接拷貝數(shù)據(jù)時(shí),你可以使用StretchRect。當(dāng)你需要更新默認(rèn)內(nèi)存池的某個(gè)資源(如圖像surface 或者紋理資源),你可以使用 UpdateSurface 和 updateTexture,不過 managed池里的資源會(huì)自動(dòng)更新,當(dāng)它的系統(tǒng)內(nèi)存的數(shù)據(jù)變化時(shí),它會(huì)自動(dòng)更新到設(shè)備內(nèi)存里
34、面去)。Pixel Copies WithinDevice MemoryStretchRect 能夠?qū)⒁粋€(gè)矩形區(qū)域的像素從設(shè)備內(nèi)存的一個(gè)surface 轉(zhuǎn)移到另一個(gè)上面去。這兩個(gè)surface 通常會(huì)是同樣的 D3DFORMAT 。在拷貝過程中, StretchRect 也能執(zhí)行有限的幾張顏色轉(zhuǎn)換。HRESULTStretchRect(IDirect3DSurface9 * source , const RECT * source_rect, IDirect3DSurface9 * destination, const RECT *dest_rect, D3DTEXTUREFILTERTYPE
35、 filter);當(dāng)source_rect 非空,整個(gè)source 面將會(huì)拷貝到目的surface。當(dāng) source_rect 非空,它指向 source 面的一個(gè)子區(qū)域。dest_rect 也是一樣。 當(dāng)需要調(diào)整源像素區(qū)域大小來適應(yīng)目的像素區(qū)域的時(shí)候, filter 參數(shù)將指定調(diào)整的方式,它的值包括 D3DTEXF_NONE,D3DTEXF_POINT,D3DTEXF_LINEAR。當(dāng)縮小和放大源像素區(qū)域的時(shí)候,point 和 linear 的過濾將會(huì)支持。D3DCAPS9結(jié)構(gòu)的 StretchRectFilterCaps 各個(gè)位標(biāo)記描述了StretchRect的過濾支持情況。#define
36、D3DPTFILTERRCAPS_MAGFLINEAR 0x02000000L#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L#define D3DPTFILTERCAPS_MINFPOINT0x00000100L如果 D3DCAPS9:DevCaps 的D3DDEVCAPS_CANBLTSYSTONONLOCAL設(shè)置,StretchRect 能支持從系統(tǒng)內(nèi)存到non-local 視頻存儲(chǔ)(如AGP 內(nèi)存)轉(zhuǎn)移數(shù)據(jù)。設(shè)備像素拷貝的格式轉(zhuǎn)換StretchRect
37、也能支持拷貝過程中的顏色轉(zhuǎn)換操作。支持的轉(zhuǎn)換可以是高性能的YUV surface 格式到高性能的RGBsurface 格式。具體支持什么樣的格式轉(zhuǎn)換,你可以通過CheckDeviceFormatConversion 方法來查看。HRESULTCheckDeviceFormatConversion(UINT adapter, D3DDEVTYPEdevice_kind, D3DFORMAT source_fmt, D3DFORMATtarget_fmt);source_fmt 可能是 FOURCC 格式也可能是合理的 back buffer 格式。 Target 格式將是下面中的一種:D3DFM
38、T_A1R5G5B5 , D3DFMT_A8R8G8B8,D3DFMT_A16B16G16R16, D3DFMT_X1R5G5B5,D3DFMT_A8R8G8B8, D3DFMT_A16B16G16R16,D3DFMT_R5G6B5, D3DFMT_X8B8G8R8,D3DFMT_A32B32G32R32F,D3DFMT_R8G8B8,D3DFMT_X8R8G8B8, D3DFMT_A2R10G10B10,D3DFMT_A2B10G10R10 。 設(shè)備像素拷貝限制:因?yàn)镾tretchRect 直接工作在設(shè)備內(nèi)存上,它將面臨很多限制。restrictions: 1. source 和 desti
39、nation 不能是相同的surface。 2.不能從 render target surface 到 off screen surface。 3. 不能基于壓縮格式stretch。4.D3DDEVCAPS2_CAN_STRETCH_RECT_FROM_TEXTURES,如果source 是紋理surface。depth/stencilrestrictions:1.不能是紋理,2. 不能discardable; 3.必須是整個(gè) surface 拷貝; 4. source 和 destination 必須是同樣的尺寸。 5.不支持 filtering 。 6. 不能從一個(gè)場(chǎng)景里面被調(diào)用。downsampling multisample render target: 1. 創(chuàng)建 multisample render target; 2. 創(chuàng)建同樣大小的 non-multismapled render target
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 戲裝項(xiàng)目評(píng)價(jià)分析報(bào)告
- 2024年醫(yī)療診斷服務(wù)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 指甲表皮保護(hù)霜相關(guān)項(xiàng)目實(shí)施方案
- 2024年高模量玻璃纖維布項(xiàng)目申請(qǐng)報(bào)告模范
- 2024年噴燈、臺(tái)鉗相關(guān)金屬手工具項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 枕席相關(guān)項(xiàng)目實(shí)施方案
- 水工軟件課程設(shè)計(jì)
- 橫梁高度測(cè)量?jī)x相關(guān)項(xiàng)目建議書
- 期中模擬測(cè)試拔高練習(xí)卷(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)語文統(tǒng)編版
- 捆扎用皮帶項(xiàng)目可行性實(shí)施報(bào)告
- 京東平臺(tái)考試答案初階運(yùn)營(yíng)學(xué)習(xí)計(jì)劃
- 鉆床主軸零件的加工工藝規(guī)程說明書
- 電儀施工方案_圖文
- 如何編制校本課程規(guī)劃方案和課程綱要2014.5.9
- 白話易經(jīng)六十四卦圖解
- 關(guān)于寶鋼戰(zhàn)略成本管理的案例分析
- 暗房操作工藝指導(dǎo)書
- (完整word版)數(shù)字信號(hào)處理課設(shè)報(bào)告(word文檔良心出品)
- 項(xiàng)目總體進(jìn)度控制計(jì)劃表
- 采煤機(jī)故障判斷及處理方法
- 高壓電工培訓(xùn)
評(píng)論
0/150
提交評(píng)論