首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将精灵融入背景?

如何将精灵融入背景?
EN

Game Development用户
提问于 2013-06-29 12:59:35
回答 2查看 2.2K关注 0票数 1

我试着将角色混合到游戏中,但我仍然不能去掉雪碧片中的蓝色,并发现雪碧的白色区域是半透明的。

在此之前,颜色D3DCOLOR_XRGB(255, 255, 255)设置为D3DXCreateTextureFromFileEx。你会看到火球穿过精灵。

在我将颜色更改为D3DCOLOR_XRGB(0, 255, 255)后,结果将是

现在,我正在尝试删除雪碧片的蓝色,我的预期结果是这样的。

到现在为止,我还是想不出该怎么做。有什么想法吗?

代码语言:javascript
复制
void initPlayer()
{
    //  Create texture.
    hr = D3DXCreateTextureFromFileEx(d3dDevice, "player.png", 169, 44, 
         D3DX_DEFAULT, NULL, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, 
         D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_XRGB(0, 255, 255), 
         NULL, NULL, &player);
}

void renderPlayer()
{
    sprite->Draw(player, &playerRect, NULL, &D3DXVECTOR3(playerDest.X, playerDest.Y, 0),D3DCOLOR_XRGB(255, 255, 255));
}

void initFireball()
{
    hr = D3DXCreateTextureFromFileEx(d3dDevice, "fireball.png", 512, 512,
         D3DX_DEFAULT, NULL, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED,
         D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_XRGB(255, 255, 255),
         NULL, NULL, &fireball);
}

void renderFireball()
{
    sprite->Draw(fireball, &fireballRect, NULL, &D3DXVECTOR3(fireballDest.X, fireballDest.Y, 0), D3DCOLOR_XRGB(255,255, 255));
}
EN

回答 2

Game Development用户

回答已采纳

发布于 2013-06-30 03:38:51

你有四个选择。首先,编辑图像并使背景透明。这是“最正确”的长期解决方案。

第二,在创建纹理之前,在加载时转换背景颜色。循环所有像素,并将其设置为指定颜色的0 alpha。您可以根据加载的方式更改图像格式。

第三,在GPU上运行时执行此操作。加载图像,绑定相同大小的渲染目标,然后使用着色器改变与背景颜色匹配的源像素。可能比使用CPU更快,也可能不快。

最后,最坏的选择,只需做这个“随需”与着色器和不麻烦存储结果。

票数 2
EN

Game Development用户

发布于 2013-06-29 13:09:58

我已经很久没有使用DirectX 9了,但下面是我对它的看法。你会想的,首先:

  1. 使用您选择的图像编辑器直接删除sprite的蓝色部分,这样它是透明的。这应该是可以实现的,几乎与任何程序。确保您保存为支持透明度的.png或其他图像格式。
  2. 使用图像查看器检查sprite现在是否真正透明(windows默认程序就可以了)。
  3. 在呈现代码中使用某种混合状态,以确保alpha不会被忽略。

对于混合状态,您可能需要查看:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb172252(v=vs.85).aspx

粗略地看一下,我认为D3DBLEND_SRCCOLOR可能就是你要找的东西。

票数 1
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/58302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档