0

在 2D 平台游戏中,如何创建手电筒效果(例如在 0:41 左右的视频中http://www.youtube.com/v/DHbjped9gM8&hl=en_US&start=42)?

我正在使用 OpenGL 进行照明。

PS:我见过几次这样的效果,但我真的不知道如何创建它们。我知道我可以使用 glEnable 创建新的光源,但它们总是以 90° 角圆形照射到我的舞台上,所以这与我正在寻找的完全不同。

4

2 回答 2

3

你必须告诉 OpenGL 你想要一个聚光灯,以及你想要什么样的锥体。让我们猜测一个典型的手电筒覆盖大约 30 度角。为此,您将使用:

glLightf(GL_LIGHTn, GL_SPOT_CUTOFF, 15.0f);

[灯 1 的位置,GL_LIGHTn灯2 的位置,依此类推]GL_LIGHT1GL_LIGHT2

您还需要使用glLightfvwithGL_LIGHT_DIRECTION来指定手电筒指向的方向。您可能还想使用GL_SPOT_EXPONENT来指定光线在锥体边缘的衰减方式。哦,您可能还想使用其中一个GL_XXX_ATTENUATIONs (但很多时候,这是不必要的)。

如果您想支持投射阴影,那是另一个更复杂的主题(可能太多了,无法在此处的答案中涵盖)。

于 2011-10-13T22:07:40.117 回答
1

您正在开发什么平台(如硬件/操作系统)?就像之前提到的帖子一样,听起来您正在使用固定功能 OpenGL,这在今天被认为是“已弃用”。您可能想研究 OpenGL 3.2,并使用完全基于着色器的方法来完成。这意味着自己处理所有光源。这也将允许您创建实时阴影和其他漂亮的效果!

于 2011-10-14T09:54:49.300 回答