SDL - 动态阿尔法
SDL - Dynamic Alpha?
我计划制作一个游戏(在 SDL 中),如果一个角色移动,它所在的图像部分将变为 alpha,从而允许我在原始场景下方放置滚动图像。
1)这可能吗?2)如果对#1是,我该如何实现它(不是给我代码,而是引导我朝着正确的方向前进)。
听起来你想学习图像合成。
如今,一个典型的游戏将在某处具有redraw
功能来重绘整个屏幕。 整个场景总是在每一帧重新绘制。
void redraw()
{
drawBackground();
drawCharacters();
drawHUD();
swapBuffers();
}
这很简单:通过使用正确的混合模式,每次绘制内容时,它都会出现在之前绘制的内容之上。 较旧的游戏要复杂得多,因为它们不会一次重绘整个屏幕(或者不使用帧缓冲),而较新的游戏要复杂得多,因为它们在多个通道中为不同类型的对象从前到后和从后到前绘制世界。
SDL 具有您可以使用的软件图像合成功能,也可以使用 OpenGL(可能使用软件和硬件的组合)。 我个人使用 OpenGL 是因为它功能更强大(可以绘制更复杂的场景),但 SDL 合成函数更易于使用。 网上有很多优秀的教程和更多平庸或糟糕的教程。
我不确定你说"它所在的图像部分变成阿尔法"是什么意思。 alpha通道不会出现在屏幕上,您看不到它,它只会影响两个图像的合成方式。
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- C++中的动态铸造故障
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 如何使用阿尔法努姆算法对C++中的文本行进行排序?
- 在不损失阿尔法值的情况下将 QColor 转换为 QString
- 计算圆,椭圆的面积(动态法)
- 布尔阿尔法大写
- 协议缓冲区(protobuf)v3.0.0-阿尔法-2中的可选字段和约束
- 阿尔法-贝塔"breaking"阿姆达尔定律?
- C++ 如何检查字母是否为阿尔法(不是拉丁字母)
- 如何判断万智牌::图像是否具有阿尔法通道
- 在 QImage 阿尔法通道中制作多边形孔
- 最小阿尔法贝塔的路径
- 迷你最大阿尔法贝塔修剪奥赛罗不工作
- 阿尔法混合澄清
- 阿尔法修剪过滤器故障
- 如何处理etc1阿尔法通道
- SDL - 动态阿尔法
- 阿尔法混合未产生所需的图像