代码之家  ›  专栏  ›  技术社区  ›  Makketronix

GL_TEXTURE_EXTERNAL_OES纹理2D坐标是否标准化?

  •  0
  • Makketronix  · 技术社区  · 10 年前

    我知道除了GL_TEXTURE_RECTANGLE之外,大多数纹理都是标准化的。

    但是,我找不到有关GL_TEXTURE_EXTERNAL_OES的信息。坐标是标准化的还是在[0,imageWidth],[0,imageHeight]的范围内?

    如果你能提到你从哪里得到的信息,我也会很感激。我在khronos网站上找不到它。

    2 回复  |  直到 10 年前
        1
  •  1
  •   Reto Koradi    10 年前

    它们使用标准化纹理坐标。您可以使用范围为[0.0,1.0]的纹理坐标来处理它们。虽然在扩展规范中指出这一点可能很好,但他们可能认为这是不必要的,因为这与OpenGLES中的所有其他纹理一样。

    资料来源:在Kindle Fire HDX 7英寸平板电脑上试用。

        2
  •  1
  •   Tommy    10 年前

    像你一样,我沮丧地无法很快找到明确的说法。然而

    的扩展文档 OES_EGL_image_external 同时提到:

    他们的默认最小过滤器是 LINEAR 。它是一个 INVALID_ENUM 将最小过滤器值设置为除 线性的 NEAREST .

    以及:

    默认的s和t换行模式为 CLAMP_TO_EDGE 它是一个 无效_编号 将换行模式设置为任何其他值时出错。

    这是非常清楚的线索,如果你习惯于处理两个纹理的非幂函数,那么坐标不会被归一化。事实上,扩展的整个要旨是,可以使用一到三个硬件采样单元,可能会丢失一些变量,并且只允许一个细节级别,这强烈保留了实现执行完全相同的操作的权利,就像您从两个源的非幂次方分别采样Y、U和V,并自己将它们进行算术组合一样。

    但就提供一个彻底的书面答案而言: 边缘夹持 已定义 by the appropriate man page 作为:

    GL_CLAMP_TO_EDGE 使坐标限制在范围内 (1/2N, 1 - 1/2N) 哪里 N 是纹理在方向上的大小 夹紧。

    ……如果坐标被标准化(尽管实际上不会被定义),这也是毫无意义的。

    所以我愿意打赌他们不会正常化。