【问题标题】:OpenGL / Cocos2d-x What's difference between v_texCoord vs gl_FragCoord in shader?OpenGL / Cocos2d-x 着色器中的 v_texCoord 与 gl_FragCoord 有什么区别?
【发布时间】:2017-05-12 10:06:14
【问题描述】:

我见过使用这两个的着色器代码。但我不明白它们之间、纹理和片段之间有什么区别。

据我所知,片段是像素,那么纹理是什么?

有些人使用这些代码:

vec2 uv = gl_FragCoord.xy / rectSize.xy;
vec4 bkg_color = texture2D(CC_Texture0, uv);

一些用途:

vec4 bkg_color = texture2D(CC_Texture0, v_texCoord);

v_texCoord = a_texCoord; 两者都有效,除了第一种方式显示倒置图像。

【问题讨论】:

    标签: opengl shader cocos2d-x


    【解决方案1】:

    在您的第二个示例中,“v_texCoord”看起来像一个预先计算的纹理坐标,它作为顶点属性传递给片段着色器,而在第一个示例的片段着色器中计算的“uv”坐标。

    您可以根据自己的喜好将纹理坐标作为基础 - 只要您为 texture2D 采样器提供标准化坐标 - 这完全与您的用例以及您希望从纹理中显示的内容有关。

    也许这里有这样的用例差异,这就是为什么它们给出不同的视觉输出。

    有关纹理坐标如何工作的更多信息,我推荐这个问题的答案:How do opengl texture coordinates work?

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 2014-07-22
      • 1970-01-01
      • 2021-01-05
      • 2019-01-05
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多