繁体   English   中英

OpenGL ES中正确的纹理坐标模型

[英]Right model of texture coordinates in OpenGL ES

我在理解OpenGL ES中的纹理映射时遇到麻烦。 例如,我有一个小的obj文件,其中包含如下信息:

  1. v -75 75 -50
  2. v 75 75 -50
  3. v -75 -75 -50
  4. v 75 -75 -50

  5. vt 0 0

  6. vt 0 1
  7. vt 1 1
  8. vt 1 0

  9. f 4/3 3/2 1/1

  10. f 2/4 4/3 1/1

如果我使用此vts,则纹理无法正确映射。 但是如果我像这样切换vts:

  1. vt 1 0
  2. vt 0 1
  3. vt 1 1
  4. vt 0 0

一切开始正常。 我试图绘制此坐标只是为了获得它们的视觉表示并获得这样的图像(我将y轴坐标反向)。 http://imgur.com/BRQgKay在第一种情况下,我看到了很好的表示形式,但是它不起作用,嘿。 在第二种情况下,我看到了一些可怕的东西,但是它起作用了。 为什么起作用,我完全不明白。 有任何想法吗? 谢谢你的帮助。 编辑: http : //i.stack.imgur.com/4YdpM.jpg我添加了一些关于结果的解释。 我们可以将纹理分为两个部分(三角形)。 在第一种情况下,我将这一部分绕对角线切换。 在第二种情况下,我可以根据划分的纹理获得良好的贴图,但是我无法理解它为什么起作用。 抱歉,如果我的解释不清楚。

如果我拿着铅笔和纸尝试绘制这个矩形,一切似乎都很好。 我采用一个坐标系,其中X向右增加,Y向上增加。 这样做时,纹理坐标看起来不错,因为左上部分为(0,0),右下部分为(1,1)。 首先让我困扰的是Z坐标。 由于它们为负值,因此从正面将其位置应小于Z( < -50 )。

再说一次,该模型似乎很好,尽管它取决于您要执行的操作。 但是在查看结果时,您会看到图像同时以X和Y镜像(对角镜像),我将开始在矩阵中寻找问题。 X镜像很可能是由于您向后看而引起的:相机位置位于(0,0,0)并朝负Z方向移动。第二种情况最有可能是通过以下两种可能方法之一反转Y坐标引起的, glOrthoglFrustum 由于这两种方法都采用参数topbottom ,因此最常见的是将bottom设置为比top ,这会使Y坐标向下旋转。

请检查所有这些参数,因为这比其他任何猜测都多。 您还应该考虑使用剔除,使用剔除将不会在背面显示多边形,因此,如果您看到正面或背面,这可能有助于您理解。

关于交换Y坐标的注意事项:这不是错误或错误的方法,到目前为止,这是一个非常标准的过程。 您必须了解,大多数桌面UI元素都具有坐标系,因此Y指向上方,移动设备首先大量使用Y反转的倒置系统。 这就是为什么(至少在2D模式下)最好使用与视图使用相同的坐标系的原因,但是创建模型的所有应用程序很可能会认为Y指向上方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM