gpt4 book ai didi

c - OpenGL 光照具有明亮的表面

转载 作者:行者123 更新时间:2023-11-30 15:35:25 24 4
gpt4 key购买 nike

如果你看这张图片:

enter image description here

您可以看到左右墙壁以及椅子的表面比其他墙壁更亮。我想知道,这是正常情况下的问题吗?或者可能只是照亮这些表面的光的位置?

在我的主要方法中,我只是这样做:

//enable lighting
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);

//setup lighting
float lightColor [] = {1.0f, 0.8f, 0.8f,1.0f};

glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, lightColor);
GLfloat lightpos[] = {2,2,4,4};
glLightfv(GL_LIGHT0,GL_POSITION, lightpos);

如果您需要查看法线,我可以上传它,但我不确定它们是否有问题。

最佳答案

看来你的法线没有按应有的方式计算。请注意不同物体的相同方向侧面的照明方式不同。

我猜:

  • 在变换对象时,您没有正确变换法线;
  • 您的法线未标准化为单位长度(您的代码中是否有 glEnable(GL_NORMALIZE) ?)
  • 法线计算在其他方面是错误的(例如,在将值发送到渲染之前对值进行舍入)。

在不查看实际代码的情况下,很难提出更多可能的原因。

关于c - OpenGL 光照具有明亮的表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com