OpenGL立方体贴图中的面部约定

lin*_*llo 16 opengl 3d geometry glsl

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  |
         |________|
Run Code Online (Sandbox Code Playgroud)

dat*_*olf 17

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

啊,是的,这是Cube Maps最奇怪的事情之一.请放心,你不是唯一一个为此而堕落的人.你看:

多维数据集地图已指定遵循RenderMan规范(无论出于何种原因),并且RenderMan假定图像的原点位于左上角,这与通常的左下角图像原点的OpenGL行为相反.这就是事情在Y方向交换的原因.它完全打破了通常的OpenGL语义,根本没有意义.但是现在我们坚持了下来.

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


Nic*_*las 15

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

在此输入图像描述

  • OpenGL 中的 -z 通常不是指向前方而不是 +z 吗?这对于立方体贴图有什么不同吗?另外,如果 Positive X 纹理的左下角是立方体最底部、最远的右手角,那么与轴相比,-Y 是否指向错误的方向? (2认同)