我正在写一个非常小的游戏,在这个游戏中玩家带着手电筒。
游戏发生的世界是一个小房子。
问题是我的墙是通过绘制多边形来制作的,一个多边形是一面墙。因此,当我将光线照射到墙壁上时,它不会亮起,只有当光线照射到其中一个顶点时,才会看到一些光线,只有一个顶点被点亮。
有没有办法让这个多边形的中间受光影响,即使那里没有定义的顶点?
我还用位置灯测试了它,这也只影响顶点。
答案 0 :(得分:2)
您在此处看到的是Gouraud shading,或者只是每个顶点灯光。这就是OpenGL的固定功能pipleline实现的。然而,在这个千年中没有人使用它。您要求的是Phong shading,或每个像素 / 每个片段照明。在OpenGL中,这意味着您必须使用可编程管道并且必须编写自己的着色器。但是你应该这样做,因为自GL3以来声明了固定功能管道已被弃用,并且实际上从OpenGL的现代核心配置文件中删除了。
所以我建议你应该做的是学习现代OpenGL,也许可以通过以下教程来学习:
第一个也包括一般照明主题和每个片段照明(e.g. here),但你应该知道这些是一些更高级的主题,并且初学者需要一些时间来学习所有首先是基础知识。