【问题标题】:Opengl Lighting Artifact (calculating light before translation)Opengl Lighting Artifact(翻译前计算光照)
【发布时间】:2017-12-08 22:52:26
【问题描述】:

我正在尝试在 opengl 中创建一个场景,但我的照明遇到了问题。我相信这与将我的模型从世界的起源翻译到各自的地方有关。

我的场景中只有 1 盏灯位于世界中心的右侧,但是您可以看到场景前面墙上的灯。

我已经编写了自己的着色器。我怀疑我计算照明太早了,因为它似乎是在模型在世界范围内翻译之前计算的,或者我使用的是本地坐标而不是世界坐标(我认为无论如何都是正确的......) .

(请忽略玻璃,它们使用的是全局光和不同的着色器)

有谁知道这是否确实如此,或者哪里是找到解决方案的最佳地点。

下面是我所说的渲染模型。

glUseProgram(modelShader);

//center floor mat 
if (floorMat)
{
    glUniformMatrix4fv(modelShader_modelMatrixLocation, 1, GL_FALSE, (GLfloat*)&(modelTransform.M));
    floorMat->setTextureForModel(carpetTexture);
    floorMat->renderTexturedModel();
}

【问题讨论】:

  • 我发现这是一个很好的学习网站,也是现代 OpenGL 的一个很好的参考。 learnopengl.com

标签: opengl lighting artifact


【解决方案1】:

https://www.youtube.com/watch?annotation_id=annotation_1430411783&feature=iv&index=86&list=PLRwVmtr-pp06qT6ckboaOhnm9FxmzHpbY&src_vid=NH68sIdF-48&v=P3DQXzyjswQ

原来我没有计算世界空间中的光照。

我只是使用普通顶点位置而不是使用转置的模型世界位置

【讨论】:

  • 否则考虑通过编辑您的问题来添加此信息。
猜你喜欢
  • 2015-02-05
  • 2021-05-11
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2011-08-11
相关资源
最近更新 更多