C++ 我是否为立方体贴图正确指定了坐标?

C++ 我是否为立方体贴图正确指定了坐标?,c++,opengl,texture-mapping,C++,Opengl,Texture Mapping,到目前为止,我对立方体贴图的理解是,需要为立方体中使用的每个顶点指定3D纹理坐标,而不是2D纹理的(u,v)坐标 一些假设 立方体贴图使用规格化顶点来表示三角形的纹理坐标 这些规格化顶点类似于指定的实际顶点:规格化纹理坐标使用其对应顶点的大小 因此,如果顶点的单位大小为1,则其归一化纹理坐标N为1.0f/sqrt(3.0f) 这些假设中哪些是正确的,哪些是不正确的?如果有任何错误,请说明原因 编辑 虽然没有必要,但我们希望能举一个例子,或者更确切地说,是一个关于推荐方法的想法——使用可编程管

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

一些假设

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

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

  • 因此,如果顶点的单位大小为1,则其归一化纹理坐标N为1.0f/sqrt(3.0f)
这些假设中哪些是正确的,哪些是不正确的?如果有任何错误,请说明原因

编辑


虽然没有必要,但我们希望能举一个例子,或者更确切地说,是一个关于推荐方法的想法——使用可编程管道。

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

(1, 1, 0.5)


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

对不起,但是你的术语完全搞错了。是的,我在做了更多的挖掘之后意识到了这一点。你指的是它使用顶点法线,对吗?不,我不是指法线。立方体贴图使用三维纹理坐标。但是,纹理坐标不指定位置,而是指定方向,即源自立方体中心的光线。
由源自立方体中心的向量的方向进行寻址
那么这是否意味着它使用曲面法线而不是顶点法线呢?@blissfreak:不,它不使用法线。除了使用glTexCoord或纹理坐标属性顶点数组指定的简单、普通纹理坐标或着色器中生成的纹理坐标外,它们都不使用顶点位置或其他任何内容。立方体贴图的主要区别在于,对于它们来说,它们的3d纹理坐标没有指定位置,而是指定方向:这是光线从立方体中心发出的方向,它击中立方体的一个面,这就是立方体贴图本身的位置。我明白了,谢谢你的澄清。你介意在你的答案后面加上建议的方法吗?
(2, 2, 1)