是否可以通过模型 View 或投影矩阵的非标准操作来弯曲或扭曲 OpenGL 空间?
例如,命令 glScale(scaleFactor,scaleFactor,noScaleFactor) 将以统一的方式沿 X 轴和 Y 轴重新调整场景中所有元素的大小。
但是如果能够以一种非均匀的方式扭曲 OpenGL 空间,它将极大地扩展不同效果的潜力。特别是,我追求的效果是类似鱼缸的缩放效果,其中元素将以线性或非线性方式放大,相对于它们与用户的距离(在我的例子中由 Z 轴表示)。
因此上面的 glScale 命令的缩放将取决于每个元素沿 Z 轴的位置:
glScale(函数1(Z距离),函数2(Z距离),noScaleFactor)
最佳答案
模型 View 和投影是矩阵。所以只能进行线性变换。您可以使用顶点着色器尝试效果,但您需要相对密集的网格才能使变换看起来不错。着色器将修改每个顶点位置,但由 3 个顶点组成的三角形仍将保持不变。
这是 Fisheye Lens Vertex Shader 的示例.
关于opengl - 是否可以通过模型 View 或投影矩阵弯曲或扭曲 OpenGL 空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098513/