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

麒麟子

~~

導(dǎo)航

<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

統(tǒng)計(jì)

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

Friends

WebSites

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

#

第一次實(shí)現(xiàn)水面渲染(紋理動(dòng)畫方法)

找了很久的相關(guān)資料,關(guān)于水面渲染的還真不好找呢,突然發(fā)現(xiàn)了一個(gè)地方有介紹紋理動(dòng)畫,于是就試著做了做,效果還真是不錯(cuò)呢。

只是還沒有實(shí)現(xiàn)倒影,下次再做。

雖然大蝦很多,但像我這樣自己搗鼓的也同樣存在,那我就說說怎么實(shí)現(xiàn)的吧,也順便理清自己的思路
我說說我的實(shí)現(xiàn)方法吧

std::vector<IDirect3DTexture9 *> vecTexture(0); //這個(gè)就是用來存儲(chǔ)我們的幾十張紋理。
先把他們?nèi)考虞d進(jìn)去。
然后我們先畫一個(gè)矩形(略)
 
然后我們根據(jù)下面這個(gè)來動(dòng)態(tài)切換紋理
Direct3DTexture9* Texture = NULL;
float timeElapsed = 0;
DWORD dwFrameSpeed = 0;
timeElapsed += timeDelta*FrameSpeed;//timeDelta是兩次渲染的間隔時(shí)間
   if(timeElapsed>vecTexture.size()) timeElapsed = 0;
   Texture = vecTexture[(int)timeElapsed];
 
接下來我們就可以設(shè)置紋理,然后渲染那個(gè)矩形就可以了。
如果要使水呈透明效果,只要和地形進(jìn)行ALPHA混合就行了,混合參數(shù)自己多調(diào)兩下。

posted @ 2009-04-22 12:26 麒麟子 閱讀(1368) | 評(píng)論 (1)編輯 收藏

為DEMO加入霧化效果

霧化效果

首先來看看我們可以設(shè)置哪些參數(shù)
1、D3DFOGSTART、D3DFOGEND表示霧的起始和結(jié)束距離
2、D3DFOGDENSITY 霧的濃度
3、D3DFOGCOLOR 霧的顏色
4、D3DFOGTABLEMODE、D3DFOGVERTEXMODE 霧的模式,第一個(gè)為像素霧化,第二個(gè)為頂點(diǎn)霧化


首先看看霧化的方程

Color = f * Color(scene) + (1-f) * color(fog)

Color(scene):背景色
Color(fog): 霧色
f:霧化參數(shù),隨觀察點(diǎn)的距離的增大而減小,從而可知最后得到的顏色,當(dāng)觀察點(diǎn)越遠(yuǎn)時(shí),霧色占的比例越大。

霧有四種方式
D3DFOG_NONE 禁用霧化效果
D3DFOG_EXP  霧化效果隨指數(shù)增加 f = 1/(e^density)
D3DFOG_EXP2 同上,不過公式變?yōu)?f = 1/(e^(density^2))
D3DFOG_LINEAR 線性霧 f = (end-d)/(end-start) d 為當(dāng)前計(jì)算點(diǎn)與觀察點(diǎn)距離

現(xiàn)在我們來看如何實(shí)現(xiàn)霧化
首先開啟霧化效果
Device->SetRenderState(D3DRS_FOGENABLE,true);
然后我們要設(shè)置霧化的模式和公式
Device->SetRenderState(DEDRS_FOGTABLEMODE,D3DFOG_LINEAR);
這里我將其設(shè)置成了像素霧和線性,同樣可以將其換成上面介紹的其它模式和公式
接下來我們就要設(shè)置霧化參數(shù)了
Device->SetRenderState(D3DRS_FOGCOLOR,oxffffffff);//設(shè)置成白色

設(shè)置start end
float start= 50,end = 400;
Device->SetRenderState(D3DRS_FOGSTART,*(DWORD*)&start);
Device->SetRenderState(D3DRS_FOGEND,*(DWORD*)&end);
設(shè)置濃度
float density = 0.001f;//0.0 -- 1.0
Device->SetRenderState(D3DRS_FOGDENSITY,*(DWORD*)&density);

這樣,我們的設(shè)置就完了,只要將霧化設(shè)置放入我們渲染場(chǎng)景中,就可以看到霧化效果了.
但應(yīng)該注意以下幾點(diǎn)
-----------------------------------------line
   A          B          C
    \          |             /
     \                     /
       \       |         /
        \              /
         \    d     /
          \        /
           \   |  /
            \   /
              P
------------------------------------------
霧化效果是以剛剛上面講的 d 作為計(jì)算標(biāo)準(zhǔn),所以,我們從P點(diǎn)看到A ,B ,C三點(diǎn)的霧化效果是一樣的,而按常理,A ,C的霧應(yīng)該更濃才對(duì).
很顯然,這讓我們想到,D3D會(huì)有對(duì)應(yīng)的處理辦法.
D3D提供了基于發(fā)散的霧化效果,霧化隨觀察點(diǎn)的距離增大而增大,就像點(diǎn)光源,不過,這要求我們的硬件支持,所以在設(shè)置前應(yīng)該檢查
D3DCAPS9 caps;
Device->GetDeviceCaps(&caps);

if(caps.RasterCaps&D3DPRASTERCAPS_FOGRANGE)
 Device->SetRenderState(D3DRS_RANGEFOGENABLE,true);

把這個(gè)增加到霧化設(shè)置中即可~~~

已經(jīng)12點(diǎn)了,估計(jì)人有點(diǎn)暈,也講不明白些什么東西了,到此為止

 


 

posted @ 2009-04-20 11:58 麒麟子 閱讀(653) | 評(píng)論 (0)編輯 收藏

透明紋理和平面陰隱DEMO


加入了影子后的效果

渲染樹目紋理之前,進(jìn)行如下設(shè)置
Device->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
Device->SetRenderState(D3DRS_SCRBLEND,D3DBLEND_SCRALPHA);
Device->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSCRALPHA);
Device->SetRenderState(D3DRS_ALPHATESTENABLE,true);
Device->SetRenderState(D3DRS_ALPHAREF,0x0);
Device->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL);


渲染陰影的時(shí)候,使用的是同一紋理,但需進(jìn)行如下設(shè)置
Device->SetRenderState(D3DRS_SCRBLEND,D3DBLEND_INVSCRALPHA);


調(diào)了一下午,才調(diào)出這陰影,難得呀~~`

posted @ 2009-04-19 14:40 麒麟子 閱讀(362) | 評(píng)論 (0)編輯 收藏

3D DEMO的初步實(shí)現(xiàn)


D3DMULTISAMPLE_0_SAMPLES

 


D3DMULTISAMPLE_4_SAMPLES

終于成功地把天空盒,公告板,MESH,紋理等一起用在了一個(gè)工程中,哈哈,雖然比較白啦,但還是很有成就感。

posted @ 2009-04-18 15:42 麒麟子 閱讀(397) | 評(píng)論 (0)編輯 收藏

從Xfile加載MESH模型

首先介紹ID3DXBuffer 接口
此類型有兩個(gè)方法
LPVOID ID3DXBuffer::GetBufferPointer();//返回指向緩存中數(shù)據(jù)起始位置的指針
DWORD ID3DXBuffer::GetBufferSize()//返回緩存的大小,單位為字節(jié)

下面函數(shù)用于創(chuàng)建一個(gè)空的ID3DXBuffer對(duì)象

HRESULT D3DXCreateBuffer(DWORD NumBytes, LPD3DBUFFER *ppBuffer);


再來介紹一個(gè)D3DXMATRIAL結(jié)構(gòu)
typedef struct D3DXMATERIAL
{
      D3DMATERIAL9 Mat3D; //存儲(chǔ)材質(zhì)
      LPSTR pTextureFilename;//存儲(chǔ)紋理路徑名
}D3DXMATERIAL;

再來看看一個(gè)重要的函數(shù)
HRESULT D3DXLoadMeshFromX(
LPCSTR pFilename,//文件名
DWORD Options,//創(chuàng)建網(wǎng)格時(shí)所使用的標(biāo)記
LPDIRECT3DDEVICE9 *pDevice,
LPD3DXBUFFER *ppAdjacency,//鄰接表信息
LPD3DXBUFFER *ppMaterials,//材質(zhì)和紋理信息. D3DXMATRIAL結(jié)構(gòu)
LPD3DXBUFFER *ppEffectInstances,//
PDWORD pNumMaterials,//材質(zhì)數(shù)目
LPD3DXMESH *ppMesh//返回填充好的Mesh對(duì)象
};

下面是一個(gè)實(shí)用的例子

class MyMesh
{
...........

private:
ID3DXMesh* Mesh = 0;
std::vector<D3DMATERIAL9> Mtrls(0);
std::vector<IDirect3DTexture9*> Textures(0);
......
};

bool MyMesh::LoadMyMesh( LPCSTR pName,IDirect3DDevice9* Device)
{
   ID3DXBuffer* adjBuffer = 0;
   ID3DXBuffer* mtrlBuffer = 0;
   DWORD numMtrls = 0;
   HRESULT hr = D3DXLoadMeshFromX(pName,D3DXMESH_MANAGED,Device,&adjBuffer,&mtrlBuffer,0,&numMtrls,&Mesh);
   if(FAILED(hr))
   {
     ::MessageBox(NULL,"D3DXLoadFromX() - FAILED",0,0);
    return false;
   }
   if(mtrlBuffer!=0&&numMtrls!=0) //如果有材質(zhì)
    { 
        D3DXMATERIAL* mtrls  =
        (D3DXMATERIAL*)mtrlBuffer->GetBufferPointer();//GetBufferPointer() 為了適合各種類型,因?yàn)榉祷豓OID*類型 需要強(qiáng)制轉(zhuǎn)換
        for(int i = 0;i<numMtrls;i++)
        {
          //得到的材質(zhì)沒有環(huán)境光,我們得自己加上,讓它等于漫射光
           mtrls[i].MatD3D.Ambient = mtrls[i].MatD3D.Diffuse;
           Mtrls.push_back(mtrls[i].MatD3D);
         }
        if(mtrls[i].pTextureFilename!=0)//紋理不為空
        IDirect3DTexture9* tex = 0;
        D3DXCreateTextureFromFile(Device,mtrls.pTextureFilename,&tex);
        Textures.push_back(tex);
        }
        else
         {
            Textures.push_back(0);
         }
     }
 adjBuffer->Release();
 mtrlBuffer->Release();
 return true;
}

//加載好后,設(shè)置好矩陣,就可以進(jìn)行繪制了.由于Mesh是分為許多子集的,所以要一個(gè)一個(gè)渲染
void MyMesh::DrawMyMesh(IDreict3DDevice9* Deivice)
{
     for(int i =0;i<Mtrls.size();i++)
     {
       Device->SetMaterial(&Mtrls[i]);
       Device->SetTexture(0,Textures[i]);
       Mesh->DrawSubset(i);
     }
}

posted @ 2009-04-18 10:02 麒麟子 閱讀(440) | 評(píng)論 (0)編輯 收藏

僅列出標(biāo)題
共38頁(yè): First 24 25 26 27 28 29 30 31 32 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩精品一区| 国产精品激情| 亚洲国产精品传媒在线观看| 美女精品在线观看| 老司机凹凸av亚洲导航| 在线观看三级视频欧美| 美女图片一区二区| 欧美成年人视频网站欧美| 亚洲美洲欧洲综合国产一区| 日韩午夜视频在线观看| 欧美日韩中文另类| 午夜视频一区二区| 久久激情婷婷| 91久久综合| 亚洲一区二区免费看| 国产一区二区欧美| 亚洲福利视频二区| 欧美激情第1页| 亚洲欧美在线免费观看| 久久久久www| 99re6这里只有精品| 亚洲欧美电影院| 亚洲国产精品ⅴa在线观看| 亚洲国产视频一区二区| 国产嫩草影院久久久久| 欧美凹凸一区二区三区视频| 欧美日韩国产精品自在自线| 久久精品水蜜桃av综合天堂| 免费看的黄色欧美网站| 午夜精品久久久久久久99黑人| 欧美在线不卡| 在线午夜精品| 久久久免费精品视频| 亚洲私人影吧| 久色成人在线| 欧美一区二区三区免费视频| 欧美韩日亚洲| 久久久久久免费| 欧美日韩免费观看一区二区三区| 久久成人18免费网站| 欧美激情影音先锋| 久久久夜夜夜| 国产精品日韩在线观看| 亚洲国产精品久久久久秋霞不卡| 国产乱码精品1区2区3区| 亚洲国产欧美久久| 在线成人欧美| 午夜亚洲精品| 亚洲欧美日韩视频二区| 欧美国产乱视频| 欧美成人免费小视频| 国产麻豆精品在线观看| 99riav1国产精品视频| 亚洲精品偷拍| 狂野欧美激情性xxxx| 久久天堂成人| 国产亚洲欧美日韩精品| 亚洲一区二区日本| 亚洲夜间福利| 欧美日韩精品免费观看视频| 亚洲成人在线免费| 亚洲大片av| 在线观看视频一区二区| 欧美一区二区日韩一区二区| 午夜欧美精品| 国产欧美韩国高清| 亚洲摸下面视频| 亚洲尤物在线视频观看| 久久国产精品99精品国产| 亚洲一区影音先锋| 在线亚洲电影| 欧美日韩亚洲不卡| 亚洲精品乱码视频| 一本色道久久综合精品竹菊 | 亚洲一区二区免费看| 亚洲私人影吧| 国产精品成人aaaaa网站| 日韩视频在线免费观看| 一本不卡影院| 国产精品hd| 欧美一级视频| 欧美xx69| 正在播放欧美视频| 国产精品国产自产拍高清av| 亚洲一区一卡| 久久噜噜亚洲综合| 在线国产欧美| 欧美日韩一区二区三区在线观看免| 亚洲精品视频中文字幕| 亚洲在线视频网站| 国产一区二区三区不卡在线观看| 久久九九久久九九| 亚洲国产成人porn| 午夜久久久久久久久久一区二区| 国产一区 二区 三区一级| 久久夜色精品亚洲噜噜国产mv| 亚洲福利专区| 午夜国产精品影院在线观看| 国产在线精品成人一区二区三区 | 亚洲在线视频一区| 久久综合九色综合欧美就去吻| 亚洲国产欧美在线人成| 欧美日韩亚洲视频| 久久精品最新地址| 99re8这里有精品热视频免费| 欧美一区二区三区四区高清| 亚洲国产天堂久久国产91| 欧美性色综合| 玖玖玖国产精品| 夜夜夜精品看看| 免费成人黄色| 亚洲欧美日韩精品| 亚洲精品久久久一区二区三区| 国产伦理一区| 欧美日韩一级黄| 噜噜噜91成人网| 亚洲一区二区伦理| 亚洲精品免费一区二区三区| 久久久www成人免费毛片麻豆| 洋洋av久久久久久久一区| 国产视频一区在线观看| 欧美精品高清视频| 久久蜜桃精品| 午夜精品免费| 一区二区久久| 亚洲国产综合91精品麻豆| 久久久久欧美| 亚洲欧美制服另类日韩| 一本色道久久88综合亚洲精品ⅰ| 亚洲大胆在线| 国内精品久久久久国产盗摄免费观看完整版 | 亚洲精品视频在线观看网站 | 亚洲伊人久久综合| 亚洲精品1区2区| 狠久久av成人天堂| 国产欧美日韩一区二区三区在线观看 | 久久国产一区二区三区| 亚洲一区免费网站| 一区二区欧美在线| 亚洲裸体俱乐部裸体舞表演av| 欧美成人日本| 欧美黑人在线观看| 免费成人黄色av| 久热精品在线| 欧美1区免费| 免费视频久久| 欧美成人性生活| 欧美激情精品久久久六区热门| 另类酷文…触手系列精品集v1小说| 欧美亚洲网站| 久久久久久黄| 老司机精品福利视频| 免费欧美在线| 亚洲黄色成人网| 亚洲国产精品欧美一二99| 欧美高清视频在线 | 亚洲尤物影院| 午夜影院日韩| 久久免费黄色| 欧美激情一区二区三区不卡| 欧美激情无毛| 日韩视频不卡| 亚洲欧美制服另类日韩| 欧美一级午夜免费电影| 久久久久久久综合| 欧美成人中文字幕在线| 欧美午夜精品理论片a级按摩| 国产精品一区免费观看| 韩国精品一区二区三区| 亚洲美女在线一区| 亚洲欧美日韩国产中文| 久久久久久亚洲综合影院红桃 | 美女免费视频一区| 91久久久一线二线三线品牌| 夜夜狂射影院欧美极品| 欧美一区二区三区免费看| 另类春色校园亚洲| 欧美午夜视频网站| 韩国精品在线观看| 一区二区三区精品| 欧美在线免费观看| 亚洲国产精品成人综合色在线婷婷 | 亚洲高清中文字幕| 亚洲影院免费观看| 欧美成年人在线观看| 一区二区三区欧美亚洲| 久久久不卡网国产精品一区| 欧美日韩成人在线| 韩国在线一区| 亚洲一区二区三区在线视频| 久热国产精品视频| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲伦伦在线| 久久aⅴ乱码一区二区三区| 欧美黑人国产人伦爽爽爽| 亚洲欧美日韩综合国产aⅴ| 欧美日韩ab片| 尤物网精品视频| 久久精品观看| 一本到高清视频免费精品|