我正在尝试使用OpenGL在图像上创建Lomo鱼眼效果。
我应该使用立方体贴图和鱼眼投影吗?是否有任何开源代码可以参考?
您可以绘制一个带有图像纹理的单个四边形,并使用片段着色器按每个像素自定义纹理坐标。您需要自己计算所有数学问题,但是前面的帖子可能是一个很好的起点。
方法1更简单且效果更好。
需要注意的事项:
当然,这完全取决于特定引擎的具体情况。我不确定这对OpenGL 3.3+核心配置文件适用程度如何,但思想应该是相同的。
可以通过在顶点着色器中进行鱼眼变换来一次性绘制世界到鱼眼中。但是!这需要足够(预)细分的原始几何体。或者,可以使用几何着色器和/或曲面细分着色器在GPU上组织细分/变换反馈。后者应该从底层构建到渲染器中。
关于使用Quake 1引擎的良好隔离示例,请参见 Fisheye and Panorama OpenGL FPS以及特别是这个 diff。不幸的是,顶点着色器示例已经丢失。