【问题标题】:Am I specifying my coordinates properly for a cube map?我是否为立方体贴图正确指定了坐标?
【发布时间】:2013-03-23 01:11:12
【问题描述】:

到目前为止,我对立方体映射的理解是需要为立方体中使用的每个顶点指定 3D 纹理坐标,而不是 2D 纹理的 (u,v) 坐标。

一些假设

  • 立方体贴图使用归一化顶点来表示三角形的纹理坐标。

  • 这些归一化顶点类似于指定的实际顶点:归一化纹理坐标使用其对应顶点的大小。

  • 因此,如果顶点的单位大小为 1,则其归一化纹理坐标 N 为 1.0f / sqrt(3.0f );

这些假设中哪些是正确的,哪些是不正确的?如果有不正确的,请说明原因。

编辑

虽然没有必要,但最好是一个示例,或者更确切地说,是一个关于使用可编程管道的推荐方法的想法。

【问题讨论】:

  • 抱歉,您的术语完全搞砸了。
  • 是的,在我进行了更多挖掘之后,我意识到这一点。你指的是它使用顶点法线,对吧?
  • 不,我指的不是法线。立方体贴图使用 3 维纹理坐标。但是纹理坐标不是指定位置,而是指定方向,即来自立方体中心的射线。

标签: c++ opengl texture-mapping


【解决方案1】:

立方体贴图是由 6 个以立方体拓扑结构排列的二次纹理组成的纹理。立方体贴图纹理坐标的唯一关键数量是它们的方向。在立方体贴图中,它的纹素由源自立方体中心的向量的方向寻址。纹理坐标向量的长度无关紧要。假设你有两个立方体贴图纹理坐标

(1, 1, 0.5)

(2, 2, 1)

它们都处理同一个立方体贴图纹理。

【讨论】:

  • addressed by the direction of a vector originating in the cube's center 那么这是否意味着它使用表面法线而不是顶点法线?
  • @blissfreak:不,它不使用法线。除了使用 glTexCoord 或纹理坐标属性顶点数组指定的简单普通纹理坐标,或在着色器中生成的纹理坐标之外,它们都不使用它的顶点位置或其他任何东西。立方体贴图的主要区别在于,对它们而言,它们的 3d 纹理坐标不指定位置,而是指定方向:它是起源于立方体中心的射线的方向,并且它撞击立方体的一个面的位置是在立方体贴图本身上的位置。
  • 我明白了,谢谢你的澄清。您介意将推荐的解决方法附加到您的答案中吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
相关资源
最近更新 更多