Direct3D9的擴充套件紋理格式

2021-09-06 02:12:30 字數 2022 閱讀 3724

klayge遊戲引擎

在winxp下,即使gpu支援d3d10+,也只能用d3d9的api。但實際上各個廠商都對d3d9做了一些擴充套件,把部分d3d10+的特性暴 露給了d3d9 api。以下是一些特殊的紋理格式,通過fourcc的方式來使用。通過checkdeviceformat可以檢測是否支援該格式,在 createtexture的時候傳入即可。下表的源頭是各廠商的gpu文件,經過unity的aras整理而來:

usage列:ds=depthstencil,rt=rendertarget;resource列:tex=texture,surf=su***ce。越綠表示越多硬體支援。

formatusageresourcedescriptionnvidia geforceati radeonintel

d3dfmt_d16

dstex

sample depth buffer directly as shadow map.

3+hd 2***+

965+

d3dfmt_d24x8

dstex

3+hd 2***+

965+

depth buffer as texture

df16

dstex

read depth buffer as texture.

9500+

g45+

df24

dstex

x1300+

intz

dstex

8+hd 4***+

g45+

rawz

dstex

6 & 7

anti-aliasing related

resz

rtsurf

resolve msaa』d depth stencil su***ce into non-msaa』d depth texture.

hd 4***+

g45+

atoc

0surf

transparency anti-aliasing.

7+ssaa

0surf

7+all ati sm2.0+ hardware

9500+

n/acoverage sampled anti-aliasing

8+texturing

ati1

0tex

ati1n & ati2n texture compression formats.

8+x1300+

g45+

ati2

0tex

6+9500+

g45+

df24

dstex

fetch 4: when sampling 1 channel texture, return four touched texel values. check for df24 support.

x1300+

misc

null

rtsurf

dummy render target su***ce that does not consume video memory.

6+hd 4***+

nvdb

0surf

depth bounds test.

6+r2vb

0surf

render into vertex buffer.

6 & 7

9500+

inst

0surf

geometry instancing on pre-sm3.0 hardware.

9500+

完整的gpu擴充套件功能,請看:

Direct3D9 建立裝置

在d3d9中,建立裝置前要先呼叫direct3dcreate9建立d3d9物件,再呼叫idirect3d9 createdevice建立裝置物件。應用程式可以對硬體查詢來檢測硬體支援的d3d裝置型別。本節講述了列舉顯示介面卡和選擇direct3d裝置等內容。應用程式必須執行一系列任務來選擇適當的d3...

Direct3D 9學習筆記 3 基本頂點繪製

如下頂點資料結構 struct vertex vertex float x,float y,float z float x,y,z static const dword fvf 然後建立乙個頂點快取 device createvertexbuffer 3 sizeof vertex size in ...

Direct3D渲染到紋理 (部分轉)

遊戲中應用的例子 遊戲中開啟觀察人物的介面,ui上顯示的人物就是通過這種方式繪製出來的。熟悉dx的兄弟們都知道什麼叫紋理了,這裡簡單介紹一下,先看看現實生活中的例子吧,其實紋理的例子比比皆是,比如地板,牆面都是紋理。在圖形學中,紋理主要是為了增強場景的真實感,比如你想繪製乙個地面,簡單一點可以直接使...