SDL - 动态阿尔法

SDL - Dynamic Alpha?

本文关键字:阿尔法 动态 SDL      更新时间:2023-10-16

我计划制作一个游戏(在 SDL 中),如果一个角色移动,它所在的图像部分将变为 alpha,从而允许我在原始场景下方放置滚动图像。

1)这可能吗?2)如果对#1是,我该如何实现它(不是给我代码,而是引导我朝着正确的方向前进)。

听起来你想学习图像合成

如今,一个典型的游戏将在某处具有redraw功能来重绘整个屏幕。 整个场景总是在每一帧重新绘制。

void redraw()
{
    drawBackground();
    drawCharacters();
    drawHUD();
    swapBuffers();
}

这很简单:通过使用正确的混合模式,每次绘制内容时,它都会出现在之前绘制的内容之上。 较旧的游戏要复杂得多,因为它们不会一次重绘整个屏幕(或者不使用帧缓冲),而较新的游戏要复杂得多,因为它们在多个通道中为不同类型的对象从前到后和从后到前绘制世界。

SDL 具有您可以使用的软件图像合成功能,也可以使用 OpenGL(可能使用软件和硬件的组合)。 我个人使用 OpenGL 是因为它功能更强大(可以绘制更复杂的场景),但 SDL 合成函数更易于使用。 网上有很多优秀的教程和更多平庸或糟糕的教程。

我不确定你说"它所在的图像部分变成阿尔法"是什么意思。 alpha通道不会出现在屏幕上,您看不到它,它只会影响两个图像的合成方式。