【问题标题】:OpenGL ES 2.0 texture clampingOpenGL ES 2.0 纹理钳位
【发布时间】:2020-09-24 01:49:28
【问题描述】:

我正在尝试在纹理坐标超过 1 时平铺纹理。

我试过这个:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT),

然而,当设置这两条线时,我看到的只是黑色,根本没有纹理!

这有效,但没有给出我需要的重复效果:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

帮助!我已经用了几个小时来调查,但没有任何结果!

【问题讨论】:

    标签: objective-c opengl-es-2.0 texture-mapping


    【解决方案1】:

    GL_TEXTURE_WRAP_SGL_TEXTURE_WRAP_T 设置为GL_REPEAT 要求您的纹理尺寸是2 的幂。

    【讨论】:

    • 是的,我知道这一点 - 但不知何故我忘了它.. :)
    【解决方案2】:

    您可以通过丢弃小数部分将大于 1 的纹理坐标值转换为 0...1 范围内的值。假设纹理坐标在 texture_coord 中,您可以在片段着色器中添加以下代码:

            texture_coord.x = mod(texture_coord.x,1.0);
            texture_coord.y = mod(texture_coord.y,1.0);
            gl_FragColor = texture2D(s_texture,texture_coord);
    

    我已经在 OpenGL ES 2.0 中对此进行了测试,它按预期工作,允许您使用任何大小的纹理,而不仅仅是 2 的幂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 2012-04-08
      • 1970-01-01
      • 2012-04-08
      • 2012-03-29
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多