OpenGL多边形上的照明

OpenGL Lighting on a polygon

本文关键字:照明 多边形 OpenGL      更新时间:2023-10-16

我正在编写一个非常小的游戏,在这个游戏中,玩家携带一个手电筒。

游戏发生的世界是一个小房子。

问题是,我的墙是由绘制多边形,一个多边形是一个墙。所以当我把光照在墙上时它不会亮起来,只有当光照射到其中一个顶点时我才会看到一些光,只有那个顶点才会亮起来。

有没有办法让这个多边形的中间受到光的影响,即使那里没有定义的顶点?

我还用位置光测试了这个,它也只影响顶点。

你在这里看到的是Gouraud阴影,或者只是每个顶点照明。这就是OpenGL的固定函数流水线所实现的。然而,在这一千年里,没有人使用它。您要求的是Phong阴影,或每个像素/每个片段照明。在OpenGL中,这意味着你必须使用可编程管道,并且必须编写自己的着色器。但是无论如何你都应该这样做,因为自GL3以来,固定函数管道被声明弃用,并且实际上从OpenGL的现代核心配置文件中删除了

所以我建议你应该做的是学习现代OpenGL,也许通过以下一些教程:

  • arcsynthesis
  • open.gl

第一个还涵盖了一般照明主题和每个片段照明(例如在这里),但你应该意识到这些是更高级的主题,初学者需要一些时间来学习所有的基础知识。