我正在使用 OpenGL 开发一个 3D 迷宫项目。尽管我对编程知之甚少,但我还是设法构建了它,添加了纹理并使用鼠标和键盘进行了操控(不过大部分都是从网上偷来的)。现在我被灯光困住了。
我的想法(类似于著名的游戏 SCP-087)是制作一个射程短的前照灯。我已经阅读了很多关于 OpenGL 和法线中的光照的内容,但是光照仍然表现得很奇怪而且有点随机。
我有这些功能,可以在相机周围移动(翻译)我的世界。我知道,如果我将 light0 放在代码的开头,在 Render() 函数中的翻译之前,该灯应该与相机“仍然放置”,并且世界将围绕它们移动 - 这听起来很简单。但这似乎不起作用。当我侧身站立时,大部分墙壁都亮着(当我转向另一侧时完全黑暗)。
我的另一个问题是正常的。我很确定,我的法线没有很好地指定,但不知道它们应该是什么样子。我正在为墙壁使用三角形条(理论上是为了提高效率,但实际上这只是我的任性),我无法找到解决方案如何为由三角形条制成的直墙指定法线(如何为面附加法线,当我实际上只有两个顶点定义一个面)。制作一堵简单的四边形墙并为一个面附加四个垂直的、一个单位向量的长度也没有任何改进。
我既不能正确处理 OpenGL 状态机的参数,尤其是衰减 - 代码中的任何更改似乎都不会影响最终照明。
我目前不知道在哪里搜索以及阅读关于 OpenGL 中光照的内容。我想让它变得超级简单,没有额外的库(glu.h 除外)。你能帮我解决这个问题或向我推荐任何有用的知识来源(需要简单的例子......)吗?