【问题标题】:Convention of faces in OpenGL cubemappingOpenGL立方体贴图中面的约定
【发布时间】:2012-07-27 10:04:00
【问题描述】:

OpenGL 对立方体贴图遵循什么约定?

我遵循了这个约定(在网站上找到)并使用对应的 GLenum 指定 6 个面 GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 但我总是弄错 Y,所以我必须用负 Y 面反转正 Y。为什么?

          ________
         |        |
         | pos y  |
         |        |
  _______|________|_________________
 |       |        |        |        |
 | neg x | pos z  |  pos x |  neg z |
 |       |        |        |        |
 |_______|________|________|________|
         |        |
         |        |
         | neg y  |
         |________|

【问题讨论】:

    标签: opengl 3d geometry glsl


    【解决方案1】:

    但我总是弄错 Y,所以我必须用负 Y 面反转正 Y。为什么?

    啊,是的,这是关于 Cube Maps 最奇怪的事情之一。请放心,你不是唯一一个爱上它的人。你看:

    Cube Maps 已被指定为遵循 RenderMan 规范(无论出于何种原因),并且 RenderMan 假定图像的原点位于左上角,这与图像原点位于左下角的通常 OpenGL 行为相反。这就是为什么事情会在 Y 方向交换。它完全打破了通常的 OpenGL 语义,根本没有意义。但现在我们被它困住了。

    请注意,左上角和左下角是在从模型空间到 NDC 空间的恒等转换的上下文中定义的

    【讨论】:

    • 好吧,这不是我的错!这只是 OpenGL 的一种奇怪行为!谢谢!
    【解决方案2】:

    这是一个方便的图表,展示了轴在 OpenGL 立方体贴图中的工作原理:

    【讨论】:

    • 这张图片说明了一切!谢谢!
    • OpenGL 中的 -z 通常不是指向前方而不是 +z 吗?这对立方体贴图有什么不同吗?此外,如果正 X 纹理的左下角是立方体的底部,最远,右手角,与您的轴相比,-Y 是否指向错误的方向?
    • "OpenGL 中的 -z 通常不是指向前方而不是 +z 吗?" 在立方体贴图中没有。规范对此非常清楚。 “如果正 X 纹理的左下角是立方体的底部,最远,右手角” 不是。 +X 面的左下角映射到立方体的顶部右侧远角。请记住:OpenGL 纹理往往是上下颠倒的,因为 GL 使用左下角坐标系作为其面的方式。
    • 上图是从内部(立方体贴图中心)还是外部显示立方体贴图面?
    • @Irbis:立方体贴图从方向纹理坐标计算纹理像素,就好像方向在立方体内部一样。所以面代表立方体的内部,如上图所示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多