gpt4 book ai didi

c++ - OpenGL光照问题

转载 作者:行者123 更新时间:2023-11-30 04:37:06 26 4
gpt4 key购买 nike

我的所有 OpenGL 光照都正常工作,包括法线、 Material 等......

我的问题是当光线在脸部后面时 OpenGL 渲染脸部的方式。如果光在脸后面,它应该渲染一张黑色的脸,但它渲染的是脸的背面。我该如何阻止这种奇怪的行为。我发现很难描述发生了什么,但希望你知道如何解决这个问题。

提前致谢。

编辑:好的,假设我有一个扁平的正方形多边形来代表一堵墙。无论我打开哪一侧的灯,即使只有一侧应该点亮而另一侧应该是黑色的(或者由于其他/环境光而非常暗),两者都会被点亮。看到问题了吗?它就像纸一样,因为光线只是穿过并出现在脸部错误的一侧。

最佳答案

出现您所看到的问题是因为多边形的两侧在其光照计算中使用相同的法线。

解决办法是设置:

float modelTwoside[] = {GL_TRUE};
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, modelTwoside);

这会导致 OpenGL 在渲染背面之前反转法线。OpenGL 也将使用背面 Material 。

关于c++ - OpenGL光照问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116261/

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