首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >镜头着色器/图像失真

镜头着色器/图像失真
EN

Stack Overflow用户
提问于 2011-11-06 09:12:34
回答 2查看 1.2K关注 0票数 3

嗯,我现在有一个3d场景,上面只有一个带有纹理的四边形(画)。在这幅画和“相机”之间,我有另外一个四边形,我想表现得像一个光学镜头:在它的“下面”扭曲图片。

如何通过着色器和一些像素级缓冲区来实现呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-06 13:08:10

这是我不久前发现的一个例子,它做的事情与你想要的非常相似。http://www.paulsprojects.net/opengl/refract/refract.html

您可能需要对代码进行一些修改才能达到您想要的反转效果,但这将使您步入正确的轨道。

编辑:顺便说一句,你不需要第二张图片(反转的小矩形)。只需使用单个背景图像和着色器。

票数 3
EN

Stack Overflow用户

发布于 2011-11-07 04:10:21

在画和“相机”之间,我有另外一个四边形的地方,我想表现得像一个光学镜头:

这是一个棘手的问题。首先,必须了解OpenGL是一个所谓的本地化渲染模型光栅化器,这意味着在外行术语中,它的工作方式就像画布上的铅笔和画笔。

因此,它的工作原理与全局场景表示渲染器(如光线跟踪器)形成了鲜明对比。光线跟踪器实际上在完全定义的场景上运行,因为它可以对折射之类的东西进行微不足道的操作。

事实上,我们必须像对待艺术家对待工具一样对待OpenGL。因此,您想要创建的任何光学“效果”都必须通过掌握OpenGL提供的工具所可能的各种绘图技术来实现。为了创造你想要的效果,你必须实现一个多阶段的过程。

对于折射,首先将场景渲染为折射对象在所有方向上都能看到的场景(创建动态立方体贴图),然后将该立方体贴图用作光栅化“折射”对象的输入数据,其中着色器用于确定光线撞击光栅化碎片的折射方向。

顺便说一句:折射也适用于任何其他类似的交互效果。阴影与OpenGL中的折射一样不是微不足道的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8024563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档