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

羅朝輝(飄飄白云)

關(guān)注嵌入式操作系統(tǒng),移動(dòng)平臺(tái),圖形開發(fā)。-->加微博 ^_^

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  85 隨筆 :: 0 文章 :: 169 評論 :: 0 Trackbacks
本文列舉了Direct3D中各種紋理應(yīng)用實(shí)現(xiàn):黑暗貼圖,發(fā)光貼圖,漫反射映射貼圖,細(xì)節(jié)紋理,紋理混合,有較詳盡的注解。其中黑暗貼圖,發(fā)光貼圖,細(xì)節(jié)紋理都是采用多重紋理的方法實(shí)現(xiàn)(也可以采用多次渲染混合實(shí)現(xiàn))。

示例代碼使用Beginning direct3D game programming中的框架,省去不少事情,可以專注紋理話題。代碼:點(diǎn)此下載

下面來看代碼與效果:

正常的紋理貼圖效果:


正常的紋理貼圖代碼:
 1//基本紋理
 2void drawNormalTexture()
 3{
 4    // 設(shè)置box紋理貼圖
 5    Device->SetTexture(0, texBox);
 6    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);    //使用紋理坐標(biāo)
 7    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
 8    Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); // 使用當(dāng)前顏色作為第一個(gè)texture stage的輸出
 9
10    // 描繪box
11    Box->draw(000);
12}

黑暗紋理貼圖效果:


黑暗紋理貼圖代碼:
 1//黑暗映射紋理
 2void drawDarkMapTexture()
 3{
 4    // Multi texture:多重紋理,此處為兩重紋理
 5    // finalColor = destPixelColor * sourcePixelColor
 6    // 設(shè)置box紋理貼圖
 7    Device->SetTexture(0, texBox);
 8    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
 9    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
10    Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); // 使用當(dāng)前顏色作為第一個(gè)texture stage的輸出
11
12    // 設(shè)置黑暗紋理貼圖
13    Device->SetTexture(1, texAlpha);
14    Device->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 0);
15    Device->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
16    Device->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);    // 顏色來源-前一個(gè)texture stage
17    Device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);    // 顏色混合:相乘
18
19    // 描繪box
20    Box->draw(000);
21}

漫反射映射貼圖效果:夜光鏡效果


漫反射映射貼圖代碼:
 1//漫射光映射紋理
 2void drawDiffuseTexture()
 3{
 4    // 設(shè)置box紋理貼圖
 5    Device->SetTexture(0, texBox);
 6    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
 7    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
 8    Device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);    // 顏色來源-漫反射
 9    Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);    // 顏色混合
10
11    // 設(shè)置材質(zhì):綠色材質(zhì)實(shí)現(xiàn)類似夜光鏡的效果
12    Device->SetMaterial(&d3d::GREEN_MTRL);
13
14    // 描繪box
15    Box->draw(000);
16}

發(fā)光映射紋理貼圖效果:


發(fā)光映射紋理貼圖代碼:
 1//發(fā)光映射紋理
 2void drawGlowMapTexture()
 3{
 4    // Multi texture:多重紋理,此處為兩重紋理
 5    // finalColor = sourcePixelColor * 1.0 + destPixelColor * 1.0
 6    // 設(shè)置box紋理貼圖
 7    Device->SetTexture(0, texBox);
 8    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
 9    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
10    Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); // 使用當(dāng)前顏色作為第一個(gè)texture stage的輸出
11
12    // 設(shè)置黑暗紋理貼圖
13    Device->SetTexture(1, texAlpha);
14    Device->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 0);
15    Device->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
16    Device->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);    // 顏色來源-前一個(gè)texture stage
17    Device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_ADD);    // 顏色混合:相加
18
19    // 描繪box
20    Box->draw(000);
21}

細(xì)節(jié)映射紋理貼圖:實(shí)現(xiàn)粗糙的凹凸效果


細(xì)節(jié)映射紋理貼圖代碼:
 1//細(xì)節(jié)映射紋理:實(shí)現(xiàn)凹凸效果
 2void drawDetailMapTexture()
 3{
 4    // Multi texture:多重紋理,此處為兩重紋理
 5    // finalColor = sourcePixelColor * destPixelColor + destPixelColor * sourcePixelColor
 6    // 設(shè)置box紋理貼圖
 7    Device->SetTexture(0, texBox);
 8    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
 9    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
10    Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); // 使用當(dāng)前顏色作為第一個(gè)texture stage的輸出
11
12    // 設(shè)置細(xì)節(jié)紋理貼圖
13    Device->SetTexture(1, texDetail);
14    Device->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 0);
15    Device->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
16    Device->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);    // 顏色來源-前一個(gè)渲染通道
17    Device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_ADDSIGNED);    // 顏色混合
18
19    // 描繪box
20    Box->draw(000);
21}

alpha紋理混合效果:多次渲染實(shí)現(xiàn)


alph紋理混合代碼:
 1//alpha混合紋理
 2void drawAlphaBlendTexture()
 3{
 4    // 多次渲染實(shí)現(xiàn)紋理混合
 5    // finalColor = sourcePixelColor * sourceBlendFactor + destPixelColor * destBlendFactor
 6    // 設(shè)置紋理混合參數(shù)
 7    Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);    // alpha值來自紋理
 8    Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
 9
10    // 設(shè)置混合因子實(shí)現(xiàn)透明效果
11    Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
12    Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
13
14    //使用box紋理貼圖實(shí)現(xiàn)第一次渲染,無alpha混合
15    Device->SetTexture(0, texBox);
16    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
17    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
18    Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); // 使用當(dāng)前顏色作為第一個(gè)texture stage的輸出
19
20    // 第一次描繪box
21    Box->draw(&boxWorldMatrix, 00);
22
23    //使用帶alpha值得flower紋理貼圖實(shí)現(xiàn)第二次渲染,有alpha混合
24    Device->SetTexture(0, texAlphaFlower);
25    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
26    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來源-材質(zhì)
27    Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); // 使用當(dāng)前顏色作為第一個(gè)texture stage的輸出
28
29    // 打開紋理混合
30    Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
31
32    // 第一次描繪box
33    Box->draw(&boxWorldMatrix, 00);
34
35    // 關(guān)閉紋理混合
36    Device->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
37}

posted on 2008-03-23 14:15 羅朝輝 閱讀(5520) 評論(6)  編輯 收藏 引用 所屬分類: Directx3D

評論

# re: D3D中的texture應(yīng)用示例 2009-08-07 15:01 網(wǎng)友
非差好。  回復(fù)  更多評論
  

# re: D3D中的texture應(yīng)用示例 2010-05-25 15:50 溪流
謝謝分享!  回復(fù)  更多評論
  

# re: D3D中的texture應(yīng)用示例 2011-12-17 18:25 emyueguang
懂了,謝謝你  回復(fù)  更多評論
  

# re: D3D中的texture應(yīng)用示例 2012-08-21 21:15
總結(jié)得很好!  回復(fù)  更多評論
  

# re: D3D中的texture應(yīng)用示例 2012-12-20 16:20 sgf
博主有源文件嗎。。。感覺,還有有點(diǎn)點(diǎn)抽象。。。。
因?yàn)?源文件的格式蠻重要的。。。有了格式才知道什么格式的文件和什么格式的混合效果。。。。  回復(fù)  更多評論
  

# re: D3D中的texture應(yīng)用示例 2012-12-20 23:01 羅朝輝
@sgf

文中就有寫 代碼:點(diǎn)此下載 啊!  回復(fù)  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩一区二区免费视频| 日韩午夜在线播放| 亚洲精品久久在线| 91久久精品国产91性色| 在线观看日韩av先锋影音电影院| 国产日韩亚洲欧美综合| 国产亚洲免费的视频看| 伊人成人在线| 亚洲美女精品一区| 亚洲欧美日本在线| 久久本道综合色狠狠五月| 久久女同精品一区二区| 亚洲国产精品va在线看黑人| 亚洲人成艺术| 性欧美精品高清| 噜噜噜久久亚洲精品国产品小说| 欧美黄色网络| 国产模特精品视频久久久久| 亚洲第一伊人| 亚洲欧美清纯在线制服| 欧美3dxxxxhd| 中文在线一区| 裸体女人亚洲精品一区| 国产精品porn| 亚洲国产日韩欧美在线动漫| 欧美亚洲综合久久| 亚洲国产欧美一区二区三区久久| 午夜视频久久久| 欧美a级大片| 国产精品免费电影| 亚洲日韩成人| 久久亚洲精选| 中文高清一区| 欧美国产综合一区二区| 国产片一区二区| 亚洲一区二区三区视频| 欧美国产日韩xxxxx| 欧美一级久久| 欧美视频日韩视频在线观看| 亚洲国产一区二区视频| 久久精品视频va| 激情久久综艺| 欧美一区二区三区视频在线| 亚洲精品乱码久久久久久黑人| 欧美在线视频日韩| 欧美视频在线免费看| 日韩一区二区福利| 欧美福利专区| 蜜桃av噜噜一区| 狠狠色噜噜狠狠色综合久| 久久国产精品久久精品国产| 亚洲社区在线观看| 国产精品成人观看视频免费| 9l视频自拍蝌蚪9l视频成人| 亚洲大胆视频| 欧美激情日韩| 日韩午夜在线| 99re8这里有精品热视频免费| 欧美bbbxxxxx| 亚洲精品中文字幕有码专区| 欧美激情第三页| 免费观看久久久4p| 日韩视频精品在线| 亚洲美女在线看| 欧美午夜a级限制福利片| 一区二区三区四区五区精品视频 | 午夜精品福利一区二区三区av| 亚洲人成网站精品片在线观看| 免费观看日韩| 一本久久青青| 一本色道久久99精品综合| 欧美日韩在线免费视频| 亚洲专区一二三| 一区二区三区精品久久久| 欧美日韩在线免费视频| 亚洲欧美日韩中文播放| 欧美在线播放| 亚洲级视频在线观看免费1级| 欧美国产在线电影| 欧美日韩免费高清一区色橹橹| 亚洲综合日韩中文字幕v在线| 亚洲在线视频免费观看| 精品999在线播放| 亚洲精品一区二区三区av| 国产精品久久久久久久久免费| 性欧美大战久久久久久久免费观看| 亚洲欧美视频在线观看视频| 亚洲国产成人精品久久| 亚洲精品国产无天堂网2021| 国产精品久久久久毛片大屁完整版| 欧美一区激情视频在线观看| 久久―日本道色综合久久| 亚洲婷婷在线| 欧美在线视频导航| 日韩视频永久免费观看| 亚洲欧美日韩综合aⅴ视频| 亚洲黄色在线| 香蕉成人久久| 日韩视频一区二区三区在线播放免费观看 | 久久久久国内| 欧美高清视频一区二区三区在线观看| aa日韩免费精品视频一| 久久精品1区| 亚洲一区二区视频在线观看| 久久精品视频亚洲| 亚洲欧美国产三级| 能在线观看的日韩av| 久久精品网址| 国产精品美女www爽爽爽视频| 欧美激情a∨在线视频播放| 国产美女精品| 一区二区三区国产| 亚洲精品一区二区三区樱花| 欧美一区二区三区在线播放| 亚洲制服欧美中文字幕中文字幕| 免费一级欧美片在线播放| 欧美伊人久久大香线蕉综合69| 欧美激情中文字幕一区二区| 噜噜噜久久亚洲精品国产品小说| 国产精品毛片va一区二区三区| 亚洲第一伊人| 亚洲二区在线观看| 久久国产日韩| 久久精品国产99| 国产精品视频久久一区| 99精品欧美一区| 99亚洲伊人久久精品影院红桃| 老司机aⅴ在线精品导航| 久久婷婷激情| 尤物网精品视频| 欧美在线看片a免费观看| 欧美专区日韩视频| 国产精品美女在线观看| 亚洲一区中文| 欧美一区二区三区免费视| 国产精品成人免费| 亚洲永久字幕| 久久精品一区二区国产| 国产在线乱码一区二区三区| 亚洲欧美久久久| 久久福利精品| 国内伊人久久久久久网站视频| 欧美一区三区二区在线观看| 久久久一区二区三区| 在线观看国产精品网站| 久久影音先锋| 亚洲精品久久久久久一区二区| 一本大道久久精品懂色aⅴ| 欧美日韩在线视频观看| 亚洲小视频在线观看| 欧美中文字幕视频| 黄色小说综合网站| 欧美成人免费在线视频| 日韩视频第一页| 午夜精品久久久久久99热| 国产日本精品| 久久久亚洲成人| 91久久视频| 欧美一区二区免费视频| 韩国成人福利片在线播放| 欧美成人国产va精品日本一级| 亚洲精品资源| 久久精品首页| 一本色道久久综合狠狠躁篇的优点 | 欧美高潮视频| 中文一区在线| 国产婷婷色一区二区三区| 快射av在线播放一区| 亚洲美女免费视频| 久久婷婷成人综合色| 99国产一区二区三精品乱码| 国产精品欧美在线| 美女主播一区| 亚洲永久字幕| 亚洲欧洲另类| 久久久无码精品亚洲日韩按摩| 91久久精品一区二区别| 国产精品伦子伦免费视频| 老妇喷水一区二区三区| 亚洲视频播放| 亚洲国产成人av好男人在线观看| 亚洲午夜激情在线| 亚洲国产精彩中文乱码av在线播放| 欧美日本三级| 久久夜色精品国产| 亚洲永久免费观看| 亚洲美女诱惑| 亚洲国产精品999| 久久久国产精品一区二区三区| 一区二区欧美日韩| 好吊日精品视频| 国产精品无码专区在线观看| 欧美精品v日韩精品v国产精品| 午夜一区二区三区不卡视频| 日韩视频―中文字幕| 免费视频亚洲| 老牛影视一区二区三区| 小黄鸭精品aⅴ导航网站入口| 亚洲精品小视频在线观看| 亚洲二区视频|