2014-04-29 172 views
0

我想渲染场景中的一对点灯,但无法获得实际灯光照亮。我开始工作的唯一的光线是平行光最初点亮的情景:Point Light not rendering

Directional Light with no Point Light rendering

其中显示了两块石头是因为这两个点光源相同的位置。我玩弄了漫反射,颜色和衰减值,但得到了相同的结果。但是,无论是改变光的氛围时,颜色改变:

Directional Light with Ambient Intensity

我的内GLSL的计算是正确的,我的制服是正确读取为好。但不知何故,我失去了我的弥漫强度。 m_pointLight[0].DiffuseIntensity未注册更改,但如果使用注释AmbientIntensity,则场景呈红色。

m_scale += 0.0057f; 

// changing the value makes scene red 
m_pointLight[0].AmbientIntensity = 0.5f; 
// changing the value does nothing 
m_pointLight[0].DiffuseIntensity = 1.5f; 
// light color is red 
m_pointLight[0].Color = glm::vec3(1.0f, 0.0f, 0.0f); 
// position of light (same as rock) 
m_pointLight[0].Position = glm::vec3(3.0f, 1.0f, FieldDepth * (cosf(m_scale) + 1.0f)/2.0f); 
// Light decay 
m_pointLight[0].Attenuation.Linear = 0.01f; 

回答

0

不是一个真正的答案但我想通了,我的问题是哪一部分:

问题是我是从看的角度。我的代码有些错误。我把我的相机位置原来设置为(0,100,75)。在将一小块代码移动到我设置我的视角和其他制服的位置之后,点光源开始显示出一些光线。问题在于当两块岩石移动,靠近地板中心时,第一块岩石的点光开始发红。第二块岩石也是如此,但它被设置为蓝色。但随着岩石靠近相机,颜色逐渐消失,直到它出现。然后,当它移回到中心时,颜色逐渐变得更亮。

那么我认为这可能与我所处的角度有关。因此,从相机位置(0,100,75),我决定从(-75为z轴)的完整相反端看。这是我得到:

enter image description here

唯一剩下的问题是,根据相机在哪里,点光源最接近相机不显示(比最接近的下侧等岩)。右下图像是正确显示所有的灯只有一个:

enter image description here

如果一些能解释这是怎么回事,这将不胜感激。

+0

也许你没有正确设置光线的位置 –

+0

@ratchetfreak我硬编码的灯光位置,并添加了一个实际的相机,所以我可以看到实时发生的事情。当我像在图片中一样移动时,我得到了相同的结果。红色和蓝色留在相机视图的左侧和右侧,而不是停留在原地。 – SpicyWeenie

+0

然后你设置光*相机空间*而不是*对象空间* –