我计划制作一个游戏(在SDL中),如果一个角色移动,它所在的图像部分会变成alpha,从而允许我在原始场景下放置一个滚动图像。
1)这可能吗? 2)如果是#1,我该如何实现这一点(不是给我代码,而是指导我正确的方向)。
答案 0 :(得分:1)
听起来您想了解图像合成。
这些天的典型游戏将在某处重新绘制整个屏幕的redraw
功能。每帧都会重绘整个场景。
void redraw()
{
drawBackground();
drawCharacters();
drawHUD();
swapBuffers();
}
这很简单:通过使用正确的混合模式,每次绘制时它都会显示在之前绘制的内容之上。较旧的游戏要复杂得多,因为它们不会一次重绘整个屏幕(或者不使用帧缓冲),而较新的游戏要复杂得多,因为它们将世界从前到后拉近对于不同类型的对象,在多次传递中从前到后。
SDL具有您可以使用的软件图像合成功能,或者您可以使用OpenGL(可以使用软件和硬件的组合)。我个人使用OpenGL因为它更强大(让你绘制更复杂的场景),但SDL合成功能更容易使用。在线有很多优秀的教程和更多平庸或可怕的教程。
我不确定你说的是什么意思"它所在的图像部分变成alpha"。 Alpha通道不会出现在屏幕上,您无法看到它,只会影响两个图像的合成方式。