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

隨筆 - 132  文章 - 51  trackbacks - 0
<2011年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用鏈接

留言簿(7)

隨筆分類

隨筆檔案

文章分類

文章檔案

cocos2d-x

OGRE

OPenGL

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

使用紋理的時(shí)候,你需要告訴DX如何將紋理貼到幾何體上,可以通過(guò)為每個(gè)頂點(diǎn)指定一個(gè)紋理坐標(biāo)來(lái)實(shí)現(xiàn):

下面的頂點(diǎn)結(jié)構(gòu)使用了2套紋理坐標(biāo):
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ| D3DFVF_DIFFUSE| D3DFVF_TEX2)
struct CUSTOMVERTEX
{   FLOAT x, y, z;                    //未經(jīng)過(guò)坐標(biāo)轉(zhuǎn)換的頂點(diǎn)坐標(biāo)
       DWORD color;               //頂點(diǎn)漫反射顏色值
       FLOAT u,v ;                        //頂點(diǎn)紋理坐標(biāo)
       FLOAT u1,v1 ;                     //頂點(diǎn)紋理坐標(biāo)
}
;

你可以通過(guò)SetTextureStageState()函數(shù)來(lái)指定哪一層紋理使用哪一套坐標(biāo),例如:

g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 1 ); // 0號(hào)紋理:使用1號(hào)紋理索引
g_pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 0 ); // 1號(hào)紋理:使用0號(hào)紋理索引
 


在下面的頂點(diǎn)結(jié)構(gòu)中只為每個(gè)頂點(diǎn)定義了一套紋理坐標(biāo):

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ| D3DFVF_DIFFUSE| D3DFVF_TEX2)
struct CUSTOMVERTEX
{   FLOAT x, y, z;                    //未經(jīng)過(guò)坐標(biāo)轉(zhuǎn)換的頂點(diǎn)坐標(biāo)
       DWORD color;               //頂點(diǎn)漫反射顏色值
       FLOAT u,v ;                        //頂點(diǎn)紋理坐標(biāo)
}
;

但并不意味著不能使用多層紋理,只不過(guò)每個(gè)頂點(diǎn)只有一套紋理坐標(biāo)紋理坐標(biāo)供選用,例如:

g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 ); /**//// 0號(hào)紋理:使用0號(hào)紋理索引
g_pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 0 ); /**//// 1號(hào)紋理:使用0號(hào)紋理索引
 


紋理混合的應(yīng)用:
原文地址:http://m.shnenglu.com/kesalin/archive/2008/03/23/45183.html
本文列舉了Direct3D中各種紋理應(yīng)用實(shí)現(xiàn):黑暗貼圖,發(fā)光貼圖,漫反射映射貼圖,細(xì)節(jié)紋理,紋理混合,有較詳盡的注解。其中黑暗貼圖,發(fā)光貼圖,細(xì)節(jié)紋理都是采用多重紋理的方法實(shí)現(xiàn)(也可以采用多次渲染混合實(shí)現(xiàn))。

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

下面來(lái)看代碼與效果:

正常的紋理貼圖效果:


正常的紋理貼圖代碼:
 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);    // 顏色來(lái)源-材質(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);    // 顏色來(lái)源-材質(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);    // 顏色來(lái)源-材質(zhì)
16    Device->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);    // 顏色來(lái)源-前一個(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);    // 顏色來(lái)源-材質(zhì)
 8    Device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);    // 顏色來(lái)源-漫反射
 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);    // 顏色來(lái)源-材質(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);    // 顏色來(lái)源-材質(zhì)
16    Device->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);    // 顏色來(lái)源-前一個(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);    // 顏色來(lái)源-材質(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);    // 顏色來(lái)源-材質(zhì)
16    Device->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);    // 顏色來(lái)源-前一個(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值來(lái)自紋理
 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)第一次渲染,無(wú)alpha混合
15    Device->SetTexture(0, texBox);
16    Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
17    Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);    // 顏色來(lái)源-材質(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);    // 顏色來(lái)源-材質(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 2010-08-12 22:51 風(fēng)輕云淡 閱讀(586) 評(píng)論(0)  編輯 收藏 引用 所屬分類: DX
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久爱www久久做| 香蕉视频成人在线观看| 国产精品久久久久久久久婷婷| 欧美国产日韩xxxxx| 久久久av毛片精品| 欧美大片国产精品| 欧美日韩国产首页| 国产精品一二三视频| 国产一区二区av| 韩日成人av| 亚洲乱码一区二区| 亚洲女同同性videoxma| 欧美一区二区三区婷婷月色 | 亚洲精品影院在线观看| 日韩午夜在线| 性色一区二区三区| 老妇喷水一区二区三区| 免费试看一区| 欧美日韩中文字幕精品| 国产一区清纯| 亚洲精品小视频在线观看| 免费观看成人www动漫视频| 欧美永久精品| 欧美高清在线视频| 国产精品日韩欧美| 亚洲狠狠婷婷| 久久精品国产一区二区三| 亚洲黄色在线看| 亚洲图片欧美一区| 免费在线看成人av| 国产原创一区二区| 一本到12不卡视频在线dvd| 午夜视频在线观看一区二区| 亚洲第一级黄色片| 欧美激情1区2区| 韩国福利一区| 亚洲日本中文| 午夜影视日本亚洲欧洲精品| 免费看av成人| 亚洲天堂网在线观看| 久久免费精品视频| 欧美系列电影免费观看| 亚洲激情亚洲| 久久久水蜜桃| 中文有码久久| 欧美激情第六页| 黄色影院成人| 欧美在线观看一区二区| 亚洲久久在线| 欧美成ee人免费视频| 激情自拍一区| 校园春色国产精品| 红桃视频一区| 欧美有码视频| 一区二区av在线| 欧美精品一区二区三区久久久竹菊 | 国产欧美精品在线| 亚洲视频导航| 亚洲国产日本| 久久久久久高潮国产精品视| 一区二区三区国产盗摄| 欧美激情一区二区三区| 在线观看不卡| 免费一级欧美在线大片| 久久久久88色偷偷免费| 国产亚洲aⅴaaaaaa毛片| 欧美一区二区视频观看视频| aⅴ色国产欧美| 欧美日韩国产成人在线| 99国产精品99久久久久久| 欧美成人蜜桃| 欧美精品粉嫩高潮一区二区| 亚洲激情视频在线播放| 欧美成人黑人xx视频免费观看| 亚洲欧美日韩直播| 亚洲第一毛片| 亚洲人午夜精品免费| 欧美日韩国产在线播放| 亚洲无线视频| 一区二区激情视频| 国产欧美日韩一区二区三区在线| 久久一区亚洲| 欧美jizz19hd性欧美| 日韩午夜三级在线| 亚洲国产一区二区在线| 欧美精品日韩一本| 亚洲一区视频| 亚洲精品视频在线看| 在线中文字幕一区| 欧美性大战久久久久久久| 午夜精品视频| 欧美影院成年免费版| 最近看过的日韩成人| 亚洲三级毛片| 国产精品户外野外| 久久久久久久一区二区| 久久人人九九| 99re6这里只有精品| 亚洲天堂av图片| 亚洲国产精品久久久久婷婷老年 | 亚洲欧美制服中文字幕| 国产精品一区免费在线观看| 久久久精品久久久久| 欧美国产日韩a欧美在线观看| 欧美影院午夜播放| 欧美激情第10页| 久久成人国产精品| 麻豆精品视频在线观看视频| 亚洲色图自拍| 免费欧美电影| 亚洲免费一区二区| 欧美本精品男人aⅴ天堂| 亚欧成人在线| 免费成人你懂的| 久久精品日产第一区二区| 欧美成人午夜影院| 久久一区二区三区四区| 国产精品v欧美精品v日韩| 久久蜜桃资源一区二区老牛| 欧美三级精品| 亚洲高清免费| 激情欧美一区二区三区| 亚洲一区精品电影| 亚洲免费观看高清完整版在线观看熊| 亚洲女优在线| 亚洲男人av电影| 欧美电影免费观看高清完整版| 久久国产精品第一页| 国产精品毛片va一区二区三区| 日韩视频欧美视频| 亚洲午夜小视频| 欧美日韩在线观看一区二区三区| 亚洲国产99精品国自产| 最近中文字幕日韩精品| 欧美成人精品福利| 亚洲盗摄视频| 亚洲国产精品一区二区www在线 | 午夜亚洲性色福利视频| 欧美午夜免费| 亚洲私人影吧| 久久久久久999| 亚洲福利视频网站| 欧美成人精品福利| 亚洲伦理网站| 亚洲小说欧美另类社区| 国产精品美女诱惑| 久久精品成人| 午夜精品久久久久久久男人的天堂 | 亚洲一区二区少妇| 午夜日韩视频| 狠狠色综合色区| 欧美成人黑人xx视频免费观看| 亚洲精品一区二区在线观看| 亚洲一区视频在线观看视频| 国产精品久久久久久久久久免费看| 午夜精品一区二区三区在线| 久久嫩草精品久久久精品一| 亚洲国产欧美在线人成| 欧美日韩国产成人在线91| 亚洲一区二区黄色| 久久视频精品在线| 亚洲精品视频在线观看免费| 欧美日韩在线第一页| 欧美伊人久久大香线蕉综合69| 蜜桃av一区| 亚洲香蕉网站| 伊人婷婷久久| 欧美日韩高清在线播放| 亚洲女同性videos| 亚洲国产欧美不卡在线观看| 欧美亚洲免费在线| 亚洲国产一区在线观看| 国产精品视频不卡| 久久亚洲视频| 亚洲欧美福利一区二区| 另类激情亚洲| 亚洲影院色无极综合| 在线播放中文一区| 欧美午夜寂寞影院| 美女视频一区免费观看| 在线一区二区三区做爰视频网站| 久久久久网站| 亚洲一级二级在线| 亚洲东热激情| 国产日韩亚洲欧美精品| 欧美激情在线观看| 欧美一区午夜精品| 在线亚洲免费| 亚洲日本一区二区三区| 暖暖成人免费视频| 久久成人亚洲| 欧美一区二区三区视频免费播放| 亚洲乱码国产乱码精品精天堂| 国外成人在线视频网站| 国产精品啊啊啊| 欧美日韩和欧美的一区二区| 免费在线播放第一区高清av| 久久久久久久久久久久久女国产乱 | 久久这里只有| 欧美制服丝袜|