2016-01-04 4 views
-1

У меня проблема с подсветкой в ​​библиотеке OpenGL. Сцена черная, свет невидимый, если GL_SPOT_CUTOFF меньше 125. Я предположил, что проблема касается направления источника света, но я попробовал множество вариантов как для позиции, так и для направления внимания. Вот мой код:Spotlight issue OpenGL

const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f }; 
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; 
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; 

glPushMatrix(); 
glLoadIdentity(); 
GLfloat spot_direction[] = { 0.0, -1.0, 0.0 ,0.0}; 
GLfloat spot_position[] = { 1.0,1.0,0.0,1.0 }; 
glLightfv(GL_LIGHT1, GL_POSITION, spot_position); 
glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient); 
glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse); 
glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular); 

glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 60); 
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spot_direction); 
glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 100); 
glPopMatrix(); 

glEnable(GL_LIGHT1); 
+0

Похоже, что объект просто не достаточно близко к свету, на который он может воздействовать. Если он работает с отсечкой> 125, но не менее, ваш объект явно находится за пределами светового конуса. – ChrisF

+0

Примечание: OpenGL, который вы используете, устарел почти десятилетие. Если вы не работаете над проектом истории, изучите современный OpenGL - иначе вы тратите свое время. – GraphicsMuncher

+1

@GraphicsMuncher Эта версия openGL требуется. – james

ответ

0

Решено. Проблема была связана со слишком высоким коэффициентом GL_SPOT_EXPONENT (свет был слишком сфокусированным) и с направлением светового потока.

 Смежные вопросы

  • Нет связанных вопросов^_^