• <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>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開源項(xiàng)目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

            這是一個(gè)很古老的問題了,不過最近使用HGE做我的Graphics給引擎用時(shí),卻又發(fā)現(xiàn)了這個(gè)問題

            下圖是一張序列幀圖片,游戲中需要進(jìn)行切片后進(jìn)行播放,當(dāng)然,這在HGE中一切正常,沒有任何問題

            這張?jiān)瓐D大小480×285,非2的n次冪,載入D3D后,紋理表面大小為512×512

            image

             

            在使用D3DXCreateTextureFromFile*系列函數(shù)載入紋理時(shí),有這么一個(gè)參數(shù)

            Filter
            [in] Combination of one or more flags controlling how the image is filtered. Specifying D3DX_DEFAULT for this parameter is the equivalent of specifying D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER. Each valid filter must contain one of the flags in D3DX_FILTER.

            這個(gè)參數(shù)有這么幾種寫法

            D3DX_FILTER_NONE    
            D3DX_FILTER_POINT   
            D3DX_FILTER_LINEAR  
            D3DX_FILTER_TRIANGLE
            D3DX_FILTER_BOX     

             

            在HGE中,用的是D3DX_FILTER_NONE,而我的引擎里,習(xí)慣性使用D3DX_FILTER_POINT

            HGE繪制出來的效果就是原圖,而只是修改成D3DX_FILTER_POINT,圖片就會被壓縮

            image

             

            我的引擎里紋理的大小,坐標(biāo)都是使用圖片真實(shí)的size。但是HGE其Texture_GetWidth,Texture_GetHeight默認(rèn)都是取Surface的大小,也就是512×512

            并且其精靈繪制時(shí),也是統(tǒng)一使用512的大小來繪制,序列幀算法也是以圖片大小為準(zhǔn)來進(jìn)行切片,這種算法未免詭異

             

            按照紋理切片,左上角第一張紋理坐標(biāo),應(yīng)該是

            (0,0)    (1/6,0)

            (0, 1/3)   (1/6, 1/3)

            我的引擎就是這個(gè)算法,而HGE的hgeAnimation類切片出來卻不是這個(gè)紋理坐標(biāo)

             

            經(jīng)過高人指點(diǎn),D3DX_FILTER_NONE     D3DX_FILTER_POINT  的繪制效果是有差別的

            image 

            左圖為使用D3DX_FILTER_POINT繪制,右圖是D3DX_FILTER_NONE繪制

            跟紋理坐標(biāo)之類,沒有太大關(guān)系,關(guān)鍵在于,D3DX_FILTER_POINT需要對紋理進(jìn)行點(diǎn)采樣處理。但為什么采樣后就能保證完整放置在Suface上不發(fā)生拉升呢?是不是D3D一個(gè)BUG?

             

            posted on 2009-12-24 17:36 戰(zhàn)魂小筑 閱讀(3471) 評論(6)  編輯 收藏 引用 所屬分類: C++/ 編程語言

            評論

            # re: D3D載入紋理需要注意的一個(gè)地方 2009-12-24 17:43 Adrian
            HGE這么做肯定有他的道理,慢慢你就會知道了。  回復(fù)  更多評論
              

            # re: D3D載入紋理需要注意的一個(gè)地方 2009-12-24 18:14 Adrian
            因?yàn)槟闶怯肈3DX的輔助函數(shù),這個(gè)宏是告訴D3DX用什么方式來載入圖片資源進(jìn)D3D的紋理,NONE是不拉伸,POINT當(dāng)然是用點(diǎn)陣方式拉伸,其他就是其他方式拉伸了。不拉伸當(dāng)然像素效果能保持原樣了。  回復(fù)  更多評論
              

            # re: D3D載入紋理需要注意的一個(gè)地方 2009-12-24 19:28 func
            HGE的Texture的Width/Height有兩個(gè),一個(gè)是原始的W/H,一個(gè)是貼圖的W/H。
            原始W/H就是圖片的W/H,貼圖的W/H是由圖片size補(bǔ)成2的n次冪size的W/H。
            Texture_GetWidth是可以帶參數(shù)的,以切換原始size和貼圖size。
            動畫算UV坐標(biāo),是拿幀在圖片上的x/y除以貼圖W/H的。
            HGE動畫的UV坐標(biāo)計(jì)算過程,不支持D3DX_FILTER_POINT這種通過壓縮得到2的n次冪的方法吧?(沒去看代碼,猜的)

            你那張寫著ABC的測試貼圖從哪搞到的?  回復(fù)  更多評論
              

            # re: D3D載入紋理需要注意的一個(gè)地方 2009-12-24 20:22 劍孤寒
            HGE用D3DX_FILTER_NONE而不用D3DX_FILTER_POINT是因?yàn)榧恿诉^濾后圖片就會變模糊,另外hgeAnimation并不詭異,正如func所說HGE的Texture的Width/Height有兩個(gè),hgeAnimation的那種算法能保證紋理能夠以正確的大小渲染出來  回復(fù)  更多評論
              

            # re: D3D載入紋理需要注意的一個(gè)地方[未登錄] 2009-12-25 00:32 Davy.xu
            哈哈,這個(gè)紋理是3,4年前在一個(gè)展示vs2.0demo中弄到的,現(xiàn)在一直用來調(diào)試3d程序,很好用  回復(fù)  更多評論
              

            # re: D3D載入紋理需要注意的一個(gè)地方 2009-12-25 15:59 凡客誠品官方網(wǎng)站
            HGE這么做肯定有他的道理  回復(fù)  更多評論
              

            国产综合免费精品久久久| 亚洲国产精品无码久久SM| 91久久精品视频| 午夜精品久久久久久久无码| 国产午夜福利精品久久2021 | 久久久久久免费视频| 久久精品国产一区二区三区日韩| 久久久国产亚洲精品| 久久亚洲私人国产精品vA| 久久久亚洲裙底偷窥综合| 久久久精品久久久久特色影视| 精品免费tv久久久久久久| 久久无码中文字幕东京热| 久久99热这里只有精品66| 国产精品久久久久国产A级| 综合久久给合久久狠狠狠97色| 久久精品成人影院| av无码久久久久不卡免费网站| 久久久人妻精品无码一区| 综合久久精品色| 久久国产成人午夜AV影院| 国产欧美久久久精品| 久久久久久久久久久久中文字幕 | 久久中文精品无码中文字幕| 欧洲成人午夜精品无码区久久 | 午夜人妻久久久久久久久| 免费一级欧美大片久久网| 国产精品欧美久久久久无广告 | 国产成人精品三上悠亚久久| 久久狠狠爱亚洲综合影院 | 亚洲午夜久久影院| 久久久久久久亚洲Av无码| 国产亚洲美女精品久久久2020| 亚洲午夜精品久久久久久浪潮| 久久精品国产99久久香蕉| 国产高潮国产高潮久久久91| 久久无码av三级| 99精品国产综合久久久久五月天| 亚洲伊人久久成综合人影院 | 99久久国产热无码精品免费| 久久亚洲AV成人出白浆无码国产|