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立方体贴图中的工作方式: