texture vs texture2D in GLSL
在GLSL(a uniform sampler2D)中采样2D纹理时,使用texture函数,并从采样器(在这种情况下为2D)推断尺寸。 从1.30开始,这是在GLSL中采样纹理的现代方法(GLSL参考页)。 但是,您也可以使用texture2D函数。
是否已弃用texture2D函数,如果这样,在某些版本的GLSL中是否会删除(或已删除)对texture2D函数的支持?
是的,从(至少)OpenGL 3.3开始不推荐使用texture2D(); 请参阅3.30 GLSL规范的第99页。 OpenGL兼容性配置文件将继续支持它,以避免破坏现有代码,但强烈建议不要在新代码中使用它。
编辑:OpenGL ES的详细信息略有不同,但最终结果是相同的:在OpenGL ES 3.0中已弃用texture2D()并由texture()代替; 请参阅3.0 GLSL ES规范的8.8节。
-
最初的问题中没有提到OpenGL ES,因此我以为我们在谈论香草GL。如果对于GL ES答案不同,那肯定值得一提;病态会更新我的答案(除非其他人想插话)。
-
@Jessy考虑到该问题没有提及任何ES(甚至没有弃用,更不用说问题中明确提到的GLSL 1.30或texture函数),您的评论确实没有任何意义。大多数人使用OpenGL ES的事实(或者是一个事实?)并不能使这个完全正确的答案变得毫无意义。因为您期望脱题答案(无论出于何种原因)不会突然使脱题答案成为脱题。
-
那么如果在OpenGL上使用texture()并在OpenGL ES上使用texture2D()来解决这个问题呢?我希望有一个功能。
-
有两种人:一种期望完全按照所提出的问题给出答案,另一种期望获得对他们所想到的问题的答案。有时这两个人实际上是同一类人。
-
@JanieClayton最初的问题从未提及任何iOS或其他OpenGL ES。 ios标记是由其他一些用户添加的(出于我不知道的原因)。
-
他们应该让此预处理器用等效的texture()调用替换所有texture2D()实例