Level of Detail 層次細(xì)節(jié)
這玩意兒一直沒搞清楚,好像分模型和貼圖兩部分。
模型:離攝像機(jī)近的地方,用高的細(xì)節(jié)網(wǎng)格渲染, 較遠(yuǎn)的地方用低的細(xì)節(jié)網(wǎng)格渲染。
貼圖:離攝像機(jī)近的地方,用分辨率高的貼圖,遠(yuǎn)的用分辨率低的貼圖。用dds文件可以保存貼圖的多個mipmap,也就是一系列從高到低的不同分辨率的貼圖,從而可以實現(xiàn)此種效果。《精通Unreal引擎技術(shù)》P188,
DDS File Reference
特別提示:Mipmaps詳解
我們一直再說的mipmap究竟是什么呢?很簡單,mipmap其實就是一系列的紋理,其中,第一個成員擁有最多的細(xì)節(jié),接下來的紋理大小減少為上一張的一半。舉個例子,假設(shè)有一張原大小為256×256的“高分辨率”紋理,那么下一級別的mipmap就是128×128的,再下來就是64×64的,以此類推。Direct3D就通過mipmap鏈來控制渲染時紋理的質(zhì)量,當(dāng)然,代價是mipmap將會消耗更多的內(nèi)存。當(dāng)對象離攝像機(jī)很近的時候,使用高質(zhì)量的紋理,而物體遠(yuǎn)離攝像機(jī)時,就是用低分辨率的紋理。
當(dāng)創(chuàng)建紋理時,可以使用參數(shù)來指定有多少個層次包含在紋理中。這里層次的數(shù)目直接與mipmap鏈相對應(yīng)。把這個參數(shù)設(shè)置為0,Direct3D則會自動在mipmap鏈中創(chuàng)建一系列紋理,從原始紋理的大小開始,一直遞減到大小為1×1。在我們所舉的例子中,在一張256×256的紋理上把這個參數(shù)設(shè)為0,將會創(chuàng)建9個紋理:256×256、128×128、64×64,32×32、16×16,8×8,4×4、2×2、1×1。
當(dāng)調(diào)用SetTexture方法時,Direct3D會根據(jù)當(dāng)前sampler states類中MipFilter的屬性值,自動在眾多的mipmap中進(jìn)行篩選。
DDS是DirectDraw Surface的縮寫,它是DirectX紋理壓縮(DirectX Texture Compression,簡稱DXTC)的產(chǎn)物。
DXTC減少了紋理內(nèi)存消耗的50%甚至更多,有3種DXTC的格式可供使用,分別是DXT1,DXT3和DXT5。
DXT1 壓縮比例:1:8 壓縮比最高,它只有1Bit Alpha,Alpha通道信息幾乎完全喪失。一般將不帶Alpha通道的圖片壓縮成這種格式。如Worldwind 用的衛(wèi)星圖片。
DXT3 壓縮比例:1:4 使用了4Bit Alpha,可以有16個Alpha值,可很好地用于alpha通道銳利、對比強(qiáng)烈的半透和鏤空材質(zhì)。
DXT5 壓縮比例:1:4 使用了線形插值的4Bit Alpha,特別適合Alpha通道柔和的材質(zhì),比如高光掩碼材質(zhì)。
許多3D軟件包括大部分游戲都用dds格式,又稱“貼圖”,許多fans通過修改dds文件可以生成特殊顯示效果。 nVidia提供了PhotoShop使用dds的插件,通過該插件也可以生成dds文件。
還有一種生成dds文件的方法是使用nVidia提供的命令行工具nvdxt.exe
該文章轉(zhuǎn)自[無憂網(wǎng)絡(luò)網(wǎng)游技術(shù)網(wǎng)]:http://www.5uwl.net/Article/ttii/msmir2001/200709/26369.html
實際文件大小比較:
tga: 12K
帶mipmap的dxt3: 6K
不帶mipmap的dxt3: 5K
不帶mipmap的dxt1: 3K
Direct3D9中的紋理貼圖
Texture coordinates are used to define a triangle on the texture that gets mapped to the 3D triangle.
紋理坐標(biāo)常常被定義為紋理上的一個三角形,這個三角形可以被貼圖到3D三角形上。
We can create textures from image files stored on disk using the D3DXCreateTextureFromFile function.
我們可以使用D3DXCreateTextureFromFile函數(shù),根據(jù)磁盤上的圖像文件來創(chuàng)建紋理。
We can filter textures by using the minification, magnification, and mipmap filter sampler states.
我們可以過濾紋理通過使用縮小過濾,擴(kuò)大過濾和多線性過濾方式。
Address modes define what Direct3D is supposed to do with texture coordinates outside the [0, 1] range. For example, should the texture be tiled, mirrored, clamped, etc.?
紋理的地址模式定義了Direct3D如何處理當(dāng)紋理坐標(biāo)超出了0-1范圍時。例如:紋理是應(yīng)該被平鋪,反射,壓縮,還是其他操作?
posted on 2008-01-17 17:12
七星重劍 閱讀(1411)
評論(0) 編輯 收藏 引用 所屬分類:
Game Engine