我计划做一个游戏(在SDL中),如果一个角色移动,它所在的图像部分会变成alpha,这样我就可以在原始场景下放置一个滚动的图像。
1)这是可能的吗? 2)如果对#1是肯定的,我如何着手实现它(不是给我代码,而是引导我朝着正确的方向)。
发布于 2011-05-22 09:11:57
听起来你想学习图像合成。
如今,一个典型的游戏会有一个redraw函数,可以在某个地方重新绘制整个屏幕。整个场景始终在每一帧中重新绘制。
void redraw()
{
drawBackground();
drawCharacters();
drawHUD();
swapBuffers();
}这就像它得到的一样简单:通过使用正确的混合模式,每次你绘制的东西都会出现在之前绘制的内容之上。旧的游戏要复杂得多,因为它们不会一次重新绘制整个屏幕(或者不使用帧缓冲区),而新的游戏要复杂得多,因为它们在不同类型的对象的多个过程中从前到后和从后到前地绘制世界。
SDL具有软件图像合成功能,您可以使用这些功能,也可以使用OpenGL (可以结合使用软件和硬件)。我个人使用OpenGL是因为它更强大(可以让你绘制更复杂的场景),但它的合成函数更容易使用。网上有很多优秀的教程,也有很多平庸或糟糕的教程。
我不知道你说的“图像的一部分变成了alpha”是什么意思。alpha通道不会出现在屏幕上,您看不到它,它只会影响两个图像的合成方式。
https://stackoverflow.com/questions/6085120
复制相似问题