游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4828|回复: 17

请教:3D中的2D 纹理混合问题

[复制链接]

8

主题

44

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2005-5-6 23:18:00 | 显示全部楼层 |阅读模式
我是一个游戏初学者:

D3DXCreateTextureFromFileEx(g_pD3DDevice, "data/map1.jpg", 0, 0, 1, 0,

    D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DX_FILTER_NONE,

    D3DX_FILTER_NONE,D3DCOLOR_ARGB(255,0,255,0), NULL, NULL, &pD3DTex[9] );
       

D3DXCreateTextureFromFileEx(g_pD3DDevice, "data/dialog.bmp", 0, 0, 1, 0,

    D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DX_FILTER_NONE,

    D3DX_FILTER_NONE,D3DCOLOR_ARGB(255,0,255,0), NULL, NULL, &pD3DTex[10] );

g_pD3DDevice->SetTexture ( 0 , pD3DTex[9] ) ;
g_pD3DDevice->SetTexture ( 1 , pD3DTex[10] ) ;
g_pD3DDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 );
g_pD3DDevice->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_MODULATE );
pD3DSprite->Draw(pD3DTex[9], &rect, &sc, NULL, rot, NULL, D3DCOLOR_ARGB(255, 255, 255, 255));
pD3DSprite->Draw(pD3DTex[10], NULL, &sc, NULL, rot, &diag, D3DCOLOR_ARGB(190, 255, 255, 255));

我是想用D3D来实现一个2D游戏的,程序如上可是不知道为什么会没有效果。我看了网上的文档说的是这样可以实现纹理的混合,请大家多帮忙,谢谢了。 [em20]

17

主题

65

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2005-5-7 00:08:00 | 显示全部楼层

Re:请教:3D中的2D 纹理混合问题

g_pd3dDevice->SetTexture(0, m_pTexture);
       
        g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
        g_pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
        g_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
如是可得。没必要用D3DXCreateTextureFromFileEx,用简单模式就可以了。

8

主题

44

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-5-7 10:58:00 | 显示全部楼层

Re:请教:3D中的2D 纹理混合问题

楼上的兄弟 不好意思我没看懂,
我是想实现两个纹理混合的
以上的代码可以吗?

8

主题

44

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-5-7 11:14:00 | 显示全部楼层

Re:请教:3D中的2D 纹理混合问题

SetRenderState查了资料说是做纹理环绕的
怎么能实现我想要的两个纹理的混合呢 ?
请多帮忙

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-5-7 12:44:00 | 显示全部楼层

Re: Re:请教:3D中的2D 纹理混合问题

sdliubo: Re:请教:3D中的2D 纹理混合问题

楼上的兄弟 不好意思我没看懂,
我是想实现两个纹理混合的
以上的代码可以吗?

他的是alphablend,因为你不是纯粹纹理混合,而是2D纹理混合,只能选用这个方法

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-5-7 12:45:00 | 显示全部楼层

Re:请教:3D中的2D 纹理混合问题

D3DXCreateTextureFromFileEx(g_pD3DDevice, "data/map1.jpg", 0, 0, 1, 0,

    D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DX_FILTER_NONE,

    D3DX_FILTER_NONE,D3DCOLOR_ARGB(255,0,255,0), NULL, NULL, &pD3DTex[9] );


D3DXCreateTextureFromFileEx(g_pD3DDevice, "data/dialog.bmp", 0, 0, 1, 0,

    D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DX_FILTER_NONE,

    D3DX_FILTER_NONE,D3DCOLOR_ARGB(255,0,255,0), NULL, NULL, &pD3DTex[10] );

g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
g_pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
g_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );

pD3DSprite->Draw(pD3DTex[9], &rect, &sc, NULL, rot, NULL, D3DCOLOR_ARGB(255, 255, 255, 255));
pD3DSprite->Draw(pD3DTex[10], NULL, &sc, NULL, rot, &diag, D3DCOLOR_ARGB(190, 255, 255, 255));

3

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2005-5-8 10:07:00 | 显示全部楼层

Re:请教:3D中的2D 纹理混合问题

楼上的,要对纹理混合要先设定好那个是底层纹理那个是上层纹理,这样是没法进行纹理混合的。
先DRAW一个纹理,然后设定第二个纹理为要混合的纹理,再进行纹理混合。

8

主题

44

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-5-8 10:49:00 | 显示全部楼层

Re: Re:请教:3D中的2D 纹理混合问题

风中无影: Re:请教:3D中的2D 纹理混合问题

楼上的,要对纹理混合要先设定好那个是底层纹理那个是上层纹理,这样是没法进行纹理混合的。
先DRAW一个纹理,然后设定第二个纹理为要混合的纹理,再进行纹理混合。

麻烦给段代码行吗?我实在是不懂,看了好多资料也没有搞定,麻烦大家了。

8

主题

44

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2005-5-8 10:57:00 | 显示全部楼层

Re:请教:3D中的2D 纹理混合问题

感谢以上的朋友的回复,不过
g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
g_pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
g_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
这样的代码没有效果,两个图片进行混合,比如一个光照图片一个地图图片
就想实现这样的一个效果,让两个图片实现颜色值相加,来实现一个类似视野的效果
是我没说清楚,还是怎么了啊,原以为用3D实现很简单的事情呢。

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2005-5-8 11:30:00 | 显示全部楼层

Re:请教:3D中的2D 纹理混合问题

你用的纹理图片格式都不带Alpha通道,如何能通过ALPHA BLEND做出光照效果?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 16:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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