游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1812|回复: 3

多重纹理混合,如何按指定区域混合

[复制链接]

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
发表于 2008-5-1 10:20:00 | 显示全部楼层 |阅读模式
我现在想实现在一张大图中用一个alpha的小图实现加亮效果,但是我看到多重纹理混合没法指定区域混合,
两张图必须是全部区域混合,即使指定 顶点uv的位置,它也是一起按这个指定区域的uv混合,没有办法做大图一个指定区域,小图全部区域的混合。

请问不用多重纹理混合,还有用其他的什么方法来实现这个功能?

代码如下:


                float tw= 1.0f/60;
                float xx = vecHitArea.x/ room_width_size ;
                float yy = 1-vecHitArea.y/ room_height_size;


                CUSTOMVERTEX* pVertices;
                g_pVB2->Lock( 0, 0, (void**)&pVertices, 0 );

                float size = 1.0f ;

                CUSTOMVERTEX cvVertices[] =
                {
                        {D3DXVECTOR3(-size,-size,0), D3DCOLOR_XRGB(0, 0, 255),xx-tw,yy+tw,}, //Vertex 0 - Blue                 
                        {D3DXVECTOR3(-size,size,0), D3DCOLOR_XRGB(255, 255, 0),xx-tw,yy-tw,}, //Vertex 2 - Red
                        {D3DXVECTOR3(size, -size, 0), D3DCOLOR_XRGB(255, 0, 0),xx+tw,yy+tw,}, //Vertex 1 - Red
                        {D3DXVECTOR3(size, size, 0), D3DCOLOR_XRGB(0, 255, 0),xx+tw,yy-tw,}, //Vertex 3 - Green
                };

                memcpy(pVertices, cvVertices, sizeof(cvVertices));
                g_pVB2->Unlock();


                //g_pd3dDevice->SetRenderTarget
                g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_DISABLE );
        g_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_DISABLE );

                g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);

                g_pd3dDevice->SetTexture( 0, g_pTextureTemplate );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );


                g_pd3dDevice->SetTexture( 1, g_pTexture2 );
        g_pd3dDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 0 );
        g_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        g_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );
        g_pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_MODULATE  );

                g_pd3dDevice->SetStreamSource( 0, g_pVB2, 0, sizeof(CUSTOMVERTEX) );
                g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
                g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2);


sf_20085110207.jpg

22

主题

63

帖子

63

积分

注册会员

Rank: 2

积分
63
发表于 2008-5-2 18:17:00 | 显示全部楼层

Re:多重纹理混合,如何按指定区域混合

偶没看明白你的意思。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2008-5-3 10:33:00 | 显示全部楼层

Re:多重纹理混合,如何按指定区域混合

用指定大小的片来画.

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2008-5-3 16:17:00 | 显示全部楼层

Re:多重纹理混合,如何按指定区域混合

我现在用strechRect去复制到小纹理里面可以做了,不过比较麻烦一些,还要先渲染到另一个rendertarget
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 15:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表