Вы должны сообщить 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
(но во многих случаях это не нужно).
Если вы хотите поддержать отбрасывание теней, это еще один, гораздо более сложный, отдельный предмет (вероятно, слишком много, чтобы попытаться найти ответ здесь).