0

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

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

如果您提及您从哪里获得信息,我也将不胜感激。我在khronos 网站上找不到它。

4

2 回答 2

1

像你一样,令人沮丧的是,我无法很快找到一个明确的声明。然而...

OES_EGL_image_external的扩展文档提到:

他们的默认最小过滤器是LINEAR. INVALID_ENUM将 min 过滤器值设置为LINEARor以外的任何值都是错误的NEAREST

和:

默认的 s 和 t 换行模式是CLAMP_TO_EDGEINVALID_ENUM将换行模式设置为任何其他值都是错误的。

如果您习惯于处理非二次幂纹理,那么这些非常清楚的线索表明坐标没有标准化。事实上,扩展的整个基调——可以使用一到三个硬件采样单元,可能会丢失一些变化,并且只允许一个细节级别——强烈保留执行完全相同的权利就好像您从非二次方源中分别对 Y、U 和 V 进行采样,然后自己将它们进行算术组合。

但就提供彻底的纸上回答而言: 由相应的手册页CLAMP_TO_EDGE定义为:

GL_CLAMP_TO_EDGE导致坐标被钳制到 range (1/2N, 1 - 1/2N),其中 N是在钳制方向上的纹理大小。

...再次,如果坐标被规范化(尽管它实际上不会是未定义的),这也没什么意义。

所以我愿意赌他们没有正常化。

于 2014-07-20T20:02:46.040 回答
1

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

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

于 2014-07-22T06:18:16.957 回答