游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4625|回复: 11

d3d COLORKEY 的问题

[复制链接]

7

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2004-4-6 17:06:00 | 显示全部楼层 |阅读模式
################
sf_20044617616.bmp

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2004-4-6 17:42:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

开alpha test,不要alpha blend

7

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
 楼主| 发表于 2004-4-6 18:23:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

################

7

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
 楼主| 发表于 2004-4-6 18:26:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

是不是 还要我自己更改调色板数据?

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2004-4-7 08:43:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

黑色的背景是要在Clear清屏函数里设置的,设置一个背景颜色后会将屏幕涂成那个颜色

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2004-4-7 09:16:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

把D3DXCreateTextureFromFileEx调用那段贴出来看看吧

7

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
 楼主| 发表于 2004-4-7 12:08:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

用的修改了了的函数
HRESULT D3DUtil_CreateTexture( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strTexture,
                               LPDIRECT3DTEXTURE9* ppTexture,
                               D3DFORMAT d3dFormat = D3DFMT_UNKNOWN ,D3DCOLOR ColorKey=D3DCOLOR_ARGB( 0xFF, (int)0, (int)0, (int)0));//默认黑色

在函数里面调用:
    return D3DXCreateTextureFromFileEx( pd3dDevice, strPath,
                D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, d3dFormat,
                D3DPOOL_MANAGED, D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR,
                D3DX_FILTER_TRIANGLE|D3DX_FILTER_MIRROR, ColorKey, NULL, NULL, ppTexture );
//
我要模拟一个2D的板子 那个能同时支持透明色 和 半透明。
你的图片调色板的颜色 ALPHA 位置是00么? 我的是00。

7

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
 楼主| 发表于 2004-4-7 12:32:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

我把调色板改的alpha改成FF了也一样 打开TEST就什么也看不见了。
状态设置
/ Setup a material
    D3DMATERIAL9 mtrl;
    D3DUtil_InitMaterial( mtrl, 1.0f, 0.0f, 0.0f );
    m_pd3dDevice->SetMaterial( &mtrl );

    // Set up the textures
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
    m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
    m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
    m_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );

    // Set miscellaneous render states
    m_pd3dDevice->SetRenderState( D3DRS_DITHERENABLE,   FALSE );
    m_pd3dDevice->SetRenderState( D3DRS_SPECULARENABLE, FALSE );
    m_pd3dDevice->SetRenderState( D3DRS_ZENABLE,        TRUE );
    m_pd3dDevice->SetRenderState( D3DRS_AMBIENT,        0x000F0F0F );
/*
         m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
         
// Set the source blend state.
m_pd3dDevice->SetRenderState(D3DRS_SRCBLEND,
                            D3DBLEND_ONE);

// Set the destination blend state.
m_pd3dDevice->SetRenderState(D3DRS_DESTBLEND,
                             D3DBLEND_ONE);

*/
            m_pd3dDevice->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x00000001);
    m_pd3dDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
   m_pd3dDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);

画图片部分

for( int i = 0 ; i < m_pmmg->GetNumBox() ; i++)
        {  
                m_pd3dDevice->SetTexture ( 0 ,m_pmmg->GetBox ( i ).GetTexture());
            m_pd3dDevice->SetStreamSource( 0, m_pmmg->GetBox ( i ).GetVertexBuf(), 0, sizeof(CUSTOMVERTEX) );
                       m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
        m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
       m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );

       

       
        m_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
        m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );
        }

闹蚀唇ê??
g_zt.AddTexture("H:\\TANK\\效果\\01\\x-01-05.bmp");

ColorKey=0XFF000000;

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-7 13:02:00 | 显示全部楼层

Re:d3d COLORKEY 的问题

关闭环境光试试

7

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
 楼主| 发表于 2004-4-7 14:18:00 | 显示全部楼层

Re:d3d COLORKEY 的问题


Re:d3d COLORKEY 的问题

关闭环境光试试
.......明白了!? 我还设置了 diffuse color 那个里面的alpha 是0。 有眉目了。THANKS!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-16 16:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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