2011-05-21 33 views
1

我打算制作一个游戏(在SDL中),如果一个角色移动,它所在的图像部分就会变成alpha,这样我就可以在原始场景下面放置一个滚动图像。SDL - 动态Alpha?

1)这可能吗? 2)如果是#1,我该如何去实现这个(不是给我代码,而是指导我在正确的方向)。

回答

1

这听起来像你想了解图像合成

一个典型的游戏这些天将有一个redraw函数某处重绘整个屏幕。整个场景总是重画每一帧。

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

这很简单,因为它得到:通过使用混合模式的权利,每次画它出现在什么是之前绘制顶部东西的时间。以前的游戏更复杂,因为它们一次不重绘整个屏幕(或不使用帧缓冲器),而新游戏更复杂,因为它们以前后和后退的方式绘制世界,在不同类型的物体的多次通过前。

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

我不确定当你说“图像的那一部分轮到alpha”时你的意思。 Alpha通道不会出现在屏幕上,您无法看到它,它只会影响两个图像合成的方式。