我使用 opengl 来产生火焰(带有粒子)。有了这个火,我想创造一种“光效”。
我用了这个功能 glMaterialfv(GL_FRONT_AND_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);