2012-04-23 3 views
0

Я использую opengl, чтобы создать огонь (с частицами). С этим огнем я хочу создать «эффект света».glMaterialfv в определенной области

Я использовал функцию glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission); Звучит неплохо, но проблема в этой функции освещает всю сцену.

Я хочу только излучение с определенной площадью. Как я могу это сделать ?

ответ

2

Установка материала будет использовать его для всех объектов на сцене. Если вы хотите использовать его для определенной области, используйте команду, которую вы использовали для установки материала, как вы хотите:

glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission); 

Затем нарисовать свои объекты, чтобы использовать этот материал. После того, как вы нарисовали объекты, измените эмиссию на значение по умолчанию (если вы читаете страницы руководства или думаете об этом, это (0.0, 0.0, 0.0, 1.0):

GLfloat r_emission[4] = {0.0, 0.0, 0.0, 1.0}; 
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, r_emission);