游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3906|回复: 6

求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

[复制链接]

17

主题

25

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2007-6-30 12:39:00 | 显示全部楼层 |阅读模式
求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

平台 DX9C, VS2005

LPDIRECT3DSURFACE9                        m_pd3dSurface;

//导入图片PANEL3
LoadFile(&quotANEL3.BMP", D3DFMT_A8R8G8B8, 0x0);
"PANEL3.BMP":图片
D3DFMT_A8R8G8B83DFORMAT
0x0:ColorKey

m_pD3DDevice9->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(80,80,80), 1.0f, 0);

//pd3dSurface 显示出来

m_pD3DDevice9->EndScene();

怎么 //pd3dSurface 显示出来 的图片跟 源图片资源的颜色 不一样,还有跟
m_pD3DDevice9->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(80,80,80), 1.0f, 0);
设置的D3DCOLOR_XRGB(80,80,80)有关,并 随D3DCOLOR_XRGB(r,b,g),RBG设置不同,随着改变。


求救,怎么 //pd3dSurface 显示出来 的图片跟 源图片资源的颜色 一样.并设置D3DCOLOR_XRGB(r,b,g),不影响

谢谢



17

主题

25

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2007-6-30 12:44:00 | 显示全部楼层

Re:求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

//设定显示状态 如下设置
        m_pD3DDevice9->SetRenderState(D3DRS_LIGHTING, false);
        m_pD3DDevice9->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
        m_pD3DDevice9->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
        m_pD3DDevice9->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
        m_pD3DDevice9->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
        m_pD3DDevice9->SetTextureStageState(0, D3DTSS_ALPHAOP,D3DTOP_MODULATE);
        m_pD3DDevice9->SetTextureStageState(0, D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
        m_pD3DDevice9->SetTextureStageState(0, D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2007-6-30 18:53:00 | 显示全部楼层

Re:求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

用D3DCOLOR_XRGB(255,255,255)代替

17

主题

25

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2007-7-1 15:15:00 | 显示全部楼层

Re:求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

设置成白色,渲染出来的颜色 几乎 跟白色 差不多、
//当我去掉了D3DRS_ALPHABLENDENABLE,就是没有问题了,
//因为不是alpha混合,我想问,
//我又要设置D3DRS_ALPHABLENDENABLE,又能让他没有很大的变化呢?
//要不 每个图片都 不一样了..郁闷
m_pD3DDevice9->SetRenderState(D3DRS_ALPHABLENDENABLE, true);

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2007-7-2 11:31:00 | 显示全部楼层

Re:求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

不好意思,我是理解错了,不大懂你的话是什么意思.....。
能不能把m_pD3DDevice9->SetRenderState(D3DRS_ALPHABLENDENABLE, true);放到你想要的没有很大变化的图片显示之后?

17

主题

25

帖子

33

积分

注册会员

Rank: 2

积分
33
 楼主| 发表于 2007-7-2 14:10:00 | 显示全部楼层

Re:求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

不好意思,是 我说的不够明白。
我想问的是设置了D3DRS_ALPHABLENDENABLE
是不是把渲染的图片跟背景混合呢?

因为设置D3DRS_ALPHABLENDENABLE 混合后,渲染出来的效果颜色就会跟背景差不多吧。

我想问的是,如果我想设置成为 透明的 应该如何处理呢?

因为,透明的 不会有混合 颜色的 变化.

谢谢

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2007-7-2 18:58:00 | 显示全部楼层

Re:求救LPDIRECT3DSURFACE9 显示D3D表面的时候颜色问题

原来是,要透明吧,那么设置alphablend没错,可能是这两行的问题了:
m_pD3DDevice9->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
m_pD3DDevice9->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
第2个参数可能要调一下,我也没摸透......
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 23:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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