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

羅朝輝(飄飄白云)

關(guān)注嵌入式操作系統(tǒng),移動平臺,圖形開發(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 羅朝輝 閱讀(5524) 評論(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ù)  更多評論
  


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久综合婷婷| 亚洲乱码日产精品bd| 精品动漫3d一区二区三区免费| 欧美日精品一区视频| 欧美国产高清| 欧美午夜精品久久久久久人妖| 欧美午夜在线视频| 国产精品丝袜白浆摸在线| 国产精品久久久久77777| 国产精品v日韩精品v欧美精品网站| 欧美日韩在线高清| 国产精品国产精品国产专区不蜜| 国产精品久久久久久久久借妻 | 一区二区三区精品| 亚洲午夜av电影| 欧美在线观看视频一区二区三区| 欧美一区二区在线免费观看| 免费国产一区二区| 国产精品yjizz| 影院欧美亚洲| 亚洲免费视频观看| 久久超碰97中文字幕| 麻豆精品视频在线| 亚洲第一毛片| 亚洲天堂网在线观看| 久久国产一区二区| 欧美人与禽猛交乱配| 国产一区二区三区高清在线观看| 亚洲激情六月丁香| 久久精品首页| 亚洲视频一区在线观看| 久久先锋影音av| 欧美性感一类影片在线播放| 在线观看亚洲精品视频| 亚洲天堂av在线免费| 欧美电影美腿模特1979在线看| 国产日韩精品一区二区三区在线| 久久精品视频免费观看| 亚洲国产精品欧美一二99| 亚洲一区二区在线观看视频| 噜噜噜91成人网| 欧美日韩一区自拍| 在线观看亚洲一区| 午夜精品久久久久久久男人的天堂| 欧美成人日本| 欧美在线亚洲一区| 欧美午夜精品电影| 亚洲伦理自拍| 免费在线国产精品| 欧美亚洲色图校园春色| 欧美日韩中文字幕在线| 亚洲精品美女91| 欧美成年人在线观看| 欧美一区二区三区电影在线观看| 国产精品久久久久久模特| 日韩亚洲一区在线播放| 美女黄色成人网| 久久精品盗摄| 国一区二区在线观看| 久久国产主播| 欧美亚洲免费在线| 国产一区二区在线观看免费| 欧美自拍偷拍| 久久久精品国产免大香伊| 国产综合久久| 久久综合成人精品亚洲另类欧美| 亚洲欧洲av一区二区| 国产精品久久久久毛片软件| 先锋影音国产一区| 午夜视频一区在线观看| 国内精品久久久久影院色 | 亚洲精品一区二区三区在线观看 | 欧美自拍偷拍| 激情成人av| 免费在线观看日韩欧美| 美女脱光内衣内裤视频久久影院 | 欧美aa在线视频| 久久精品国产欧美亚洲人人爽| 国产亚洲视频在线| 久久综合电影| 免费看亚洲片| 宅男精品视频| 午夜激情久久久| 精品动漫一区| 亚洲国产欧美一区| 国产精品红桃| 久久亚洲不卡| 欧美人与禽性xxxxx杂性| 亚洲欧美激情一区二区| 久久综合电影一区| 欧美剧在线免费观看网站| 一区二区精品| 亚洲欧美国产精品va在线观看| 韩国精品在线观看| 亚洲国产精品视频| 国产精品久99| 久久久久久电影| 欧美成人久久| 久久福利一区| 欧美连裤袜在线视频| 久久精品国产亚洲aⅴ| 欧美www在线| 久久精品人人爽| 欧美日韩八区| 狂野欧美一区| 国产精品羞羞答答| 亚洲黄色天堂| 国产一区二区三区免费不卡 | 久久久99免费视频| 亚洲色图综合久久| 久久精品久久综合| 亚洲欧美999| 欧美激情a∨在线视频播放| 欧美伊人久久| 欧美日韩国内| 欧美激情亚洲精品| 国产手机视频一区二区| 亚洲理论在线| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲激情视频在线| 欧美一级大片在线免费观看| 中文久久乱码一区二区| 免费观看一级特黄欧美大片| 国产精品综合色区在线观看| 蜜臀久久99精品久久久久久9| 国产精品美女久久久浪潮软件 | 亚洲一区在线观看视频| 99亚洲一区二区| 欧美电影在线| 亚洲成人中文| 精品动漫3d一区二区三区免费版| 亚洲综合成人在线| 亚洲欧美日韩天堂| 欧美日韩精品一区二区三区四区| 欧美电影免费观看网站| 一区免费观看视频| 久久久久国产免费免费| 久久亚洲国产成人| 激情久久婷婷| 噜噜噜躁狠狠躁狠狠精品视频| 久久天天躁夜夜躁狠狠躁2022 | 老牛嫩草一区二区三区日本| 亚洲免费婷婷| 欧美性大战久久久久久久蜜臀| 亚洲日本电影| 一本一本a久久| 欧美日韩亚洲激情| 在线中文字幕一区| 欧美一级电影久久| 国产亚洲va综合人人澡精品| 香蕉成人久久| 久热精品在线视频| 亚洲高清一区二| 欧美国产激情| 99精品99| 久久精品国产欧美激情| 激情综合激情| 欧美激情亚洲激情| 99这里只有久久精品视频| 亚洲免费小视频| 国产一区二区三区在线观看精品 | 美女国产一区| 亚洲精品你懂的| 午夜一级久久| 亚洲国产精品成人久久综合一区 | 国产精品毛片va一区二区三区| 性色av香蕉一区二区| 欧美激情一区二区三区在线| 亚洲网站啪啪| 激情欧美一区二区三区在线观看| 欧美国产欧美综合| 午夜精品视频在线| 亚洲激情综合| 久久精品日产第一区二区三区| 亚洲人成久久| 国产一区二区三区日韩| 欧美精品一区二区三区四区| 性欧美xxxx视频在线观看| 欧美激情四色| 久久久福利视频| 一区二区三区日韩在线观看 | 欧美精品色一区二区三区| 亚洲欧美日韩国产综合精品二区| 亚洲高清视频在线| 久久精品国产精品亚洲精品| 艳妇臀荡乳欲伦亚洲一区| 国内精品久久久久影院色 | 国产精品区一区二区三| 另类春色校园亚洲| 亚洲一区二区三区四区在线观看 | 国产精品www994| 欧美sm极限捆绑bd| 亚久久调教视频| 夜夜嗨av一区二区三区四区| 亚洲专区在线视频| 欧美国产精品v| 亚洲一区不卡| 91久久精品一区二区三区| 国产午夜精品理论片a级大结局| 欧美日韩国产成人在线观看|