Opengl 特定区域内的GLMATERIALV

Opengl 特定区域内的GLMATERIALV,opengl,area,light,Opengl,Area,Light,我使用opengl创建火(带有粒子)。 用这个火,我想创造一种“光的效果” 我使用了函数glmateriallv(GL_FRONT_和_BACK,GL_EMISSION,EMISSION) 听起来不错,但问题是这个功能照亮了整个场景 我想要一个特定区域的发射。如何执行此操作?设置材质将对场景中的所有对象使用该材质。如果只想将其用于特定区域,请使用用于设置所需材质的命令: glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission); 然后绘制对象

我使用opengl创建火(带有粒子)。 用这个火,我想创造一种“光的效果”

我使用了函数
glmateriallv(GL_FRONT_和_BACK,GL_EMISSION,EMISSION)
听起来不错,但问题是这个功能照亮了整个场景


我想要一个特定区域的发射。如何执行此操作?

设置材质将对场景中的所有对象使用该材质。如果只想将其用于特定区域,请使用用于设置所需材质的命令:

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);