Фонарик-эффект в платформе OpenGL 2D-игра - PullRequest
0 голосов
/ 14 октября 2011

В 2D игре на платформе, как я могу создать эффект фонарика (как в этом видео около 0:41 http://www.youtube.com/v/DHbjped9gM8&hl=en_US&start=42)?

Я использую OpenGL для освещения.

PS: я видел подобные эффекты несколько раз, но я действительно не знаю, как их создавать. Я знаю, что могу создавать новые источники света с помощью glEnable, но они всегда круглые и светятся под углом 90 ° на мою сцену, так что это сильно отличается от того, что я ищу.

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Вы должны сообщить OpenGL, что вам нужен точечный светильник, и какой тип конуса вы хотите. Давайте предположим, что типичный фонарик охватывает около 30 градусов. Для этого вы бы использовали:

glLightf(GL_LIGHTn, GL_SPOT_CUTOFF, 15.0f);

[где GL_LIGHTn будет GL_LIGHT1 для света 1, GL_LIGHT2 для света 2 и т. Д.]

Вам также нужно будет использовать glLightfv с GL_LIGHT_DIRECTION, чтобы указать направление, на которое направлен фонарик. Вы также можете использовать GL_SPOT_EXPONENT, чтобы указать, как свет падает на краях конуса. О, вы также можете использовать один из GL_XXX_ATTENUATION (но во многих случаях это не нужно).

Если вы хотите поддержать отбрасывание теней, это еще один, гораздо более сложный, отдельный предмет (вероятно, слишком много, чтобы попытаться найти ответ здесь).

1 голос
/ 14 октября 2011

Для какой платформы (как в аппаратном обеспечении / операционной системе) вы разрабатываете?Как и в предыдущем посте, похоже, вы используете фиксированную функцию OpenGL, которая сегодня считается «устаревшей».Возможно, вы захотите взглянуть на OpenGL 3.2 и сделать это с полным подходом на основе шейдеров.Это означает, что вы должны обращаться со всеми источниками света самостоятельно.Это также позволит вам создавать тени в реальном времени и другие приятные эффекты!

...