- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
关于使用 glFrustum,
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1, 1, -1, 1, 0.1, 1000.0);
glLoadMatrxi(GL_MODELVIEW);
glBegin(GL_QUADS); //A room's left wall
glVertex3f(-1.0, 1.0, 0.0);
glVertex3f(-1.0, 1.0, -0.4);
glVertex3f(-1.0, -1.0, -0.4);
glVertex3f(-1.0, -1.0, 0.0);
glEnd();
我所有的绘图都发生在 -1, 1(注意上面的//A room's left wall 的代码片段)即
X 轴:-1 变成左边,1 变成右边,原点在中心。< br/>Y轴:1为顶部,-1为右侧,原点在中心
glFrustum 会自动将我的坐标更改为 [-1,1] 吗?
通常,我会通过指定屏幕坐标来绘制立方体,如下所示:
例如:ofBox(512,384,0,10)
在屏幕中央给我一个框 [Window width: 1024, Window Height: 768]
如果我想继续在我的像素坐标中正常绘图,并且不想通过尝试从像素坐标绘图转换为标准化坐标来让事情变得复杂,即使我使用 glFrustum
?
最佳答案
我认为您仍然很难想象平截头体是什么,以及它与投影的关系。简单地说,截锥体是一个顶端在一定距离处被截断的金字塔:
如果用作 OpenGL 投影矩阵,平截头体的边界在 View 空间坐标(即在模型 View 转换之后)中定义一个体积,该体积将变成一个范围为 {-1, 1 的立方体}²×{0, 1}通过投影变换和齐次划分。
近平面的范围定义了 View 空间坐标中的范围——即视点位于 (0,0,0) 的世界空间——将被映射(即“拉伸(stretch)”和/或“收缩” ") 到用 glViewport
定义的渲染窗口的范围。
简而言之:您使用 glViewport
定义窗口中的像素坐标,使用 glFrustum
从 View 空间中“切”出一个切片(这是以相机位于 (0,0,0) 的方式移动的世界空间)。
关于c++ - 在非标准化坐标中绘制 - glFrustum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483150/
根据 MSDN,我们将当前矩阵与透视矩阵相乘。我们在这里谈论什么矩阵?同样来自 MSDN: "The glFrustum function multiplies the current matrix
我正在尝试使用 C++ 和 openGL 创建一个 3D 操作程序。我对 openGL 比较陌生,所以我经常需要查阅文档才能找到正确的函数来完成我想做的事情。我认为我对正交投影和透视投影有很好的理解(
关于使用 glFrustum, glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1, 1, -1, 1, 0.1, 1000.0);
我有这个代码: /* * This is a simple program that computes FPS * by means of a circular buffer */ #inclu
目前我将 glFrustum 设置为 glFrustum(0, 100.0, 0, 100.0, -50, 50); 我的图像是一个矩形立方体,尺寸为:当形状的尺寸小于查看框时,为什么我看不到图像?
我刚开始阅读有关 OpenGL 的主题,特别是关于 Viewing 的内容满足我目前的需求。我正在尝试理解 glFrustum 以了解我在屏幕上绘制的对象的透视投影,据我所知,glFrustum 会使
我正在尝试使用 OpenGL 对场景进行离轴投影,并且我阅读了文档给 Robert Kooima's off-axis projection并且现在对实际必须做的事情有了更好的了解,但仍有一些我在这里
我有一个程序,可以根据用户的位置在屏幕上渲染场景。当用户改变位置时,平截头体改变以提供离轴投影。我想利用该技术在三个不同的显示器上工作,将一个更大的场景拼接在一起,具有以下类型: 想象一下在三个显示器
我使用 OpenGL 绘制了几个二维形状现在我想添加捏/缩放。我的观点是透视图(顶 View )。我假设它是 3D,z 轴 = 0。 现在,我应该如何更改 glfrustum 并在我的 Activit
我正在尝试使用 glFrustum 进行透视投影,据我所知,glFrustum 像 glOrtho 可用于修改我们的映射所需的坐标系到实际屏幕坐标(如 Blue book 中所读)。所以,如果我执行
我的老师说它们可以互换使用来影响投影矩阵。他认为 gluLookAt()之所以优选使用,是因为它“由于能够定义视角而相对简单”。这是真的?我见过同时使用 gluLookAt() 的代码示例和 glFr
我想知道 gluLookAt 和 glFrustum 是否会扭曲渲染的图片。 场景是这样渲染的: 这是呈现它的代码。 InitCamera 被调用一次 并且,据我现在的理解,应该设置一个矩阵,就好像我
我正在调试我想查看深度图像扫描的代码,但我的相机设置不允许我看到扫描。因此,我正在玩弄相机设置。我在 (30,120,800) 处创建了一个巨大的点,我可以使用 gluLookAt 看到它。 glFr
我试图在窗口上画一条线,但它没有用 glFrustum() 显示。我在 glOrtho() 中使用了相同的代码,它确实显示了该行。我还需要设置什么才能让我的线路显示在设置窗口上吗? void init
原始问题/代码 我正在微调 3D 对象的渲染并尝试使用 gluLookAt 实现相机跟随对象,因为对象的中心 y 位置一旦达到其最大高度就会不断增加。下面是我设置 ModelView 和投影矩阵的代码
我正在编写一个太空探索应用程序。我决定以光年为单位,并准确地模拟了恒星之间的距离。经过修补和大量艰巨的工作(主要是学习绳索),我让相机从穿越宇宙的星舰的角度正常工作。 最初我没有注意 gluPersp
我只是使用 LWJGL 3 设置一个简单的渲染器,当它在我的外部显示器上运行时,它看起来像我预期的那样,但是当在我的 Macbook 上调整它的大小时,它会缩小视口(viewport)。然后,如果我移
我正在完成一项绘制线框 GLUT 标准对象的任务。这看起来很简单,但我们被告知我们不能使用 gluAtLook()、glOrtho()、glFrustrum,但我们必须使用 glTranslate()
我一直在使用 OpenGL 3.0,让我困惑的一件事是新的 OpenGL 如何处理视锥体。如果您应该为透视计算创建自己的矩阵,那么如何向 OpenGL 指定 zFar 和 zNear 平面距离是多少?
概述: 我正在尝试创建一个类似于此的 3D 应用程序: www.youtube.com/watch?v=h9kPI7_vhAU. 我正在使用 OpenCV2.2、Python2.7 和 pyOpenG
我是一名优秀的程序员,十分优秀!