【问题标题】:texture vs texture2D in GLSLGLSL中的纹理与texture2D
【发布时间】:2012-09-06 19:44:55
【问题描述】:

在 GLSL(uniform sampler2D)中对 2D 纹理进行采样时,将使用 texture 函数并从采样器中推断出尺寸(在本例中为 2D)。这是自 1.30 (GLSL Reference Pages) 以来在 GLSL 中对纹理进行采样的现代方式。不过您也可以使用texture2D 函数。

texture2D 函数是否已弃用,如果是,是否会在某些版本的 GLSL 中删除(或已删除)对 texture2D 函数的支持?

【问题讨论】:

    标签: opengl glsl


    【解决方案1】:

    是的,texture2D() 从(至少)OpenGL 3.3 开始被弃用;请参阅3.30 GLSL specification 的第 99 页。 OpenGL 兼容性配置文件将继续支持它以避免破坏现有代码,但强烈建议不要在新代码中使用它。

    编辑:OpenGL ES 的细节略有不同,但最终结果是相同的:texture2D() 在 OpenGL ES 3.0 中被弃用并被 texture() 取代;请参阅3.0 GLSL ES specification 的第 8.8 节。

    【讨论】:

    • 原始问题中没有提到 OpenGL ES,所以我假设我们在谈论 vanilla GL。如果 GL ES 的答案不同,那当然值得一提;我会更新我的答案(除非其他人想插话)。
    • @Jessy 考虑到问题没有提到任何 ES(甚至没有弃用,更不用说 GLSL 1.30 或问题中明确提到的texture 函数) ),您的评论没有任何意义。大多数人使用 OpenGL ES 的事实(或者无论如何都是一个?)并没有神奇地使这个完全正确的答案变得毫无意义。因为您期望一个题外话的答案(无论出于何种原因)不会突然使一个题外话的答案离题。
    • 那么如果在 OpenGL 上使用 'texture()',如果在 OpenGL ES 上使用'texture2D()',答案是什么?我宁愿有一个功能。
    • 有两种人:一种是希望完全按照问题的要求给出答案,另一种是希望得到他们脑海中的问题的答案。有时这两个实际上是同一类人。
    • @JanieClayton 最初的问题从未提及任何 iOS 或其他 OpenGL ES。 ios 标签是由其他用户添加的(原因我不知道)。
    猜你喜欢
    • 2016-01-03
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2015-01-22
    • 1970-01-01
    相关资源
    最近更新 更多