glMaterialfv在特定区域内

时间:2012-04-23 07:30:16

标签: opengl area light

我使用opengl来创建一个火(带有粒子)。 有了这场火,我想创造出一种光效"。

我使用了函数glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission); 这听起来不错,但问题是这个功能在整个场景都很亮。

我想要一个特定区域的发射。我怎么能这样做?

1 个答案:

答案 0 :(得分: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);