简单的Opengl和图形问题

时间:2012-07-05 01:55:42

标签: opengl graphics 3d

  1. COP和“相机”是一回事吗?反过来又指的是“用户”在看屏幕?
  2. 有人可以向我解释一下Projection Perspective和Viewport之间的关系吗?因为在我看来他们似乎是同一件事。或者PP是窗口,然后缩放以适合视口?
  3. 在OpenGL中设置gluPerspective时,zNear值是Camera与Projection Perspective的距离,因此fovy和zNear的组合定义了Window的大小(假设Window == Projection Perspective,我找不到东西:/)进入世界。
  4. 当创建一个窗口(仅使用gl和glu)时,在你输入的所有内容开始后(!quit)循环具有渲染功能(这个问题有点傻),是否所有情况都被绘制在这个具有glBegin()和glEnd()的渲染函数中。让我们假设我有一个有很多功能的大世界等等。是否需要绘制的所有内容都适合这些函数,以便此Render函数能够及时变得非常大?

1 个答案:

答案 0 :(得分:4)

  

COP和“相机”是一回事吗?反过来又指的是看着屏幕的“用户”?

COP可能意味着很多,但我认为你的意思是“投影中心”。在仿射投影的情况下,COP确实位于“相机”的位置。但是OpenGL没有摄像头,COP通常位于原点。移动“相机”是通过将整个世界移动到移动相机的方式来实现的。

  

有人可以向我解释一下Projection Perspective和Viewport之间的关系吗?

投影透视是一种附加在相机上的“镜头”。您也可以使用完全不同的投影,其表现非常不同。

视口是投影边界“对齐”的窗口部分。想象一下,Viewport是窗口/屏幕的一部分,您可以在其上放置/缩放/拉伸渲染图片(当然,渲染直接发生在视口上)。

  

因为在我看来他们似乎是同一件事。或者PP是窗口,然后缩放以适合视口?

它更像是后者。

  

在OpenGL中设置gluPerspective时,zNear值是Camera与Projection Perspective的距离,因此fovy和zNear的组合定义了Window的大小(假设Window == the Projection Perspective并且我看不到某些东西:/)进入世界。

不完全。投影体积由所谓的平截头体(一种四边金字塔,其中已切割尖端)定义。尖端位于原点,即一切都朝向尖端投射。但投影事物的飞机是近平面。很容易看出,近平面应尽可能远离原点,尽可能远离平面。必须两者都有相同的符号,否则事情会通过看起来错误的原点“投射”。

  

创建窗口时(仅使用gl和glu),

你不能只用OpenGL和GLU创建一个窗口(GLU不是OpenGL BTW的一部分!)。

  

在你输入所有你输入的所有东西时(!quit)循环有一个渲染函数(这个问题有点傻),所有情况都会在这个渲染函数中绘制出来,它有glBegin()和glEnd( )。让我们假设我有一个有很多功能的大世界等等。是否需要绘制的所有内容都适合这些函数,以便此Render函数能够及时变得非常大?

嗯,OpenGL不是场景图。这是你已经想到的绘图API。是的,屏幕上的所有内容都必须放入绘图功能中。但是,您永远不会将场景直接放入代码中。您构建了一些抽象数据结构,您可以使用外部源中的数据填充这些数据结构,然后使用一组渲染函数来迭代这些结构来决定,渲染什么以及进行正确的绘制调用。

顺便说一句:立即模式,即glBegin ... glEnd自OpenGL-2以来已被弃用,有利于Vertex Arrays。请不要使用立即模式。只需跳过关于它的每一章和教程。