opengl - 是否可以通过模型 View 或投影矩阵弯曲或扭曲 OpenGL 空间?

标签 opengl

是否可以通过模型 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/

相关文章:

java - LWJGL 中使用什么版本的 GL 有关系吗?

c - 如何让更新线程和渲染线程一起顺利工作(在 Linux 上)?

c++ - OSX Lion 上的 makefile 中的 GLFW 链接问题

opengl - 顶点缓冲区的双缓冲与三重缓冲

c++ - 倾斜的平截头体不扭曲场景

c++ - QGLWidget上下文破坏

opengl - MacOSX 上的 OpenGL 头文件位于哪里?

opengl - 2D 矩阵到 3D 矩阵

c++ - 旋转并移动到 OpenGL 中的相对中心

opengl - 使用 Opengl 进行等距投影