为什么纹理坐标 1.0 超出了纹理边缘?

2024-07-01

我正在使用纹理进行颜色查找以将效果应用于图片。我的查找是使用第一个纹理片段的亮度的渐变图,然后在第二个纹理上查找。第二个纹理为 256x256,具有水平渐变和从上到下的几个不同渐变。总共 32 条水平条纹,每条高 8 像素。我在 x 上查找的是亮度,在 y 上查找的是渐变,我的目标是条纹的中心以避免交叉。

我的片段着色器如下所示:

 lowp vec4 source = texture2D(u_textureSampler, v_fragmentTexCoord0);
 float luminance = 1.0 - dot(source.rgb, W);
 lowp vec2 texPos;
 texPos.x = clamp(luminance, 0.0, 1.0);
 // the y value selects which gradient to use by supplying a T value
 // this would be more efficient in the vertex shader
 texPos.y = clamp(u_value4, 0.0, 1.0);

 lowp vec4 newColor1 = texture2D(u_textureSampler2, texPos);

它效果很好,但我在白人的最白部分和黑人的最黑部分出现了失真。基本上,它看起来像是从texture2上完全不同的位置获取了newColor,或者可能只是没有为这些片段获取任何内容。我在着色器中添加了夹子,试图防止它超出查找纹理的边缘,但这没有帮助。是我没有正确使用夹子吗?

最后我认为这可能与我的源纹理或其加载方式有关。我最终通过添加以下内容来修复它:

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

所以为什么?

必须夹紧纹理有点烦人,因为这意味着我在加载查找表时必须在代码中编写异常。

如果我的 textPos.x 和 .y 被限制为 0-1.. 它如何将样本拉到边缘之外?

另外..创建纹理时我是否必须使用上面的钳位调用,或者当我要使用纹理时我可以调用它吗?


这是纹理采样器的正确行为。

让我解释一下。当您使用纹理时GL_LINEARGPU 采样将采用与附近像素混合的像素的平均颜色(这就是为什么您看不到像素化的原因)GL_NEAREST模式 - 像素被模糊)。 与GL_REPEAT模式纹理坐标将从 0 换行到 1,反之亦然,与附近的像素混合(即在极端坐标中,它将与纹理的另一侧混合)。GL_CLAMP_TO_EDGE防止这种环绕行为,并且像素不会与纹理另一侧的像素混合。

希望我的解释很清楚。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么纹理坐标 1.0 超出了纹理边缘? 的相关文章

随机推荐

  • 使用打字稿的反应表出了问题

    将react table 与useGlobalFilter 一起使用时出现打字稿错误 我只是按照互联网上的一些说明进行操作 这是我的代码 const DataTable React FC
  • jScrollpane Chrome问题

    在 JScrollPane 站点的 已知问题 中 有一个 在 Webkit 浏览器中 CSS 必须是 包含在 JavaScript 之前 我这样做了 但有时我仍然遇到 仅在第一页 索引中 一些滚动问题 滚动就消失了 在我再次刷新页面后一切正
  • 使用 vba 创建“色阶”(避免条件格式)

    我正在寻找一种通过 VBA 代码将色阶应用于一组单元格的方法but not通过应用一些条件格式 我想将它们应用为静态颜色 内部颜色 我搜索了很多 Excel 网站 谷歌和 stackoverflow 但什么也没找到 对于我的情况 如果你看下
  • 使用 PowerMock 和 Mockito 模拟 Logger 和 LoggerFactory

    我想模拟以下记录器 但要验证日志条目是否被调用 而不是内容 private static Logger logger LoggerFactory getLogger GoodbyeController class 我想模拟用于 Logger
  • 自定义工具提示格式

    我在 Windows 上使用普通的原生 C 语言工作 没有其他平台 没有 C 是的 我是恐龙 我试图找到一个我认为的 所有者绘制工具提示控件 的示例 但这似乎不存在 至少对于标准 Windows 工具提示控件来说不是 我尝试搜索实现自定义工
  • 无需在线即可从 XMPP 获取离线消息

    我们的移动聊天应用程序使用 ejabberd 服务器 我们正在为我们的 IOS 应用程序使用 IOS XMPP Framework https github com robbiehanson XMPPFramework https gith
  • Jquery UI 选项卡在 AngularJS 中不起作用

    我在 angularJS 中使用 jquery UI 选项卡 并使用 ng repeat 生成列表项和选项卡容器 选项卡可以正常工作 但选项卡容器无法正常工作 模板 tabs html ul li a class pageName href
  • 下拉列表在 php 中保留先前选择的值

    我在 php 中创建了一个个人资料页面 用户使用 html 下拉列表选择性别 html代码如下 Gender
  • 当开关用于枚举时,default 有什么用?

    假设我有一个枚举Color有 2 个可能的值 RED and BLUE public enum Color RED BLUE 现在假设我有这个枚举的 switch 语句 其中有两个可能值的代码 Color color getColor a
  • C 和 C++ 中的“**”是什么意思?

    当一个对象开头有两个星号时意味着什么 variable 在声明中 这意味着它是一个指向指针的指针 int x declare x as a pointer to a pointer to an int 使用它时 它会引用它两次 int x
  • Chrome 扩展弹出窗口的非阻塞警报

    我正在制作一个 chrome 扩展 为此我需要在弹出窗口中添加一些非阻塞警报 定期警报会暂停 javascript 代码执行 而客户端并不希望这样 我尝试使用 jQuery 的 UI 对话框 但是当我单击 确定 按钮关闭它时 弹出窗口失去焦
  • 字符串和数组泛型方法将来将被弃用

    在下面的链接 MDN 站点 中 它显示 字符串泛型是非标准的 已弃用 将来可能会被删除 请注意 如果不使用下面提供的填充程序 则不能跨浏览器依赖它们 他们所指的方法是否是他们在此声明下方提供的垫片中列出的方法 这是我见过的唯一对 字符串泛型
  • 从 Angular 的详细信息页面导航回来后保持搜索页面的状态

    我是 Angular 新手 当用户通过单击搜索结果中的链接导航到详细信息页面时 我需要维护搜索结果页面的状态 即保留搜索结果网格的排序和过滤值 网格并再次导航回搜索页面 我尝试使用 CustomReuseStartegy 但遇到两个问题 当
  • 在 woocommerce 中创建带有音频文件的可下载产品

    相信你的一天过得很充实 我需要从前端创建一个可下载的 woocommerce 产品 我已经能够创建链接来发布产品并将音频文件添加为附件 但我需要在付款后使此附件可下载 就像您从仪表板发布可下载的 woocommerce 产品时一样 我已经可
  • VS Code “在插入符处选择单词”快捷方式,就像 WebStorm IDE 中一样

    WebStorm集成开发环境有一个非常有用的shortcut https intellij support jetbrains com hc en us community posts 206819745 Do You Use The Ct
  • sed 用变量替换[重复]

    这个问题在这里已经有答案了 我想替换一行内容alpha pi 具有给定角度的正确计算值 以弧度为单位 即变量 n1 bin bash read p Angle in degrees n1 Convert angle to radians p
  • 在 Simulink 中初始化 Dymola FMU

    我在尝试使用 Simulink 中的 fmu 文件模拟模型时遇到了问题 我使用 Dymola Simulink 接口的 Modelon FMI 工具箱将 Model Exchange 类型 fmu 文件 版本 1 0 导入 Simulink
  • System.LoadLibrary(libname) 在 Javacv 代码中的 Nvidia Tegra 2 芯片组 (Android Samsung Tab) 上崩溃

    我在 Android 中使用了一个自定义相机Javacv代码 https code google com p javacv 我没有包含所有 so 文件 而仅包含我的应用程序似乎需要的那些文件 如下面的屏幕截图所示 它在三星 Galaxy S
  • 如何仅选择从空间实体中提取的第一个实体?

    我正在尝试使用以下代码从 DataFrame 中可用的文本中提取实体 for i in df Text to list doc nlp i for entity in doc ents if entity label GPE 我需要存储第一
  • 为什么纹理坐标 1.0 超出了纹理边缘?

    我正在使用纹理进行颜色查找以将效果应用于图片 我的查找是使用第一个纹理片段的亮度的渐变图 然后在第二个纹理上查找 第二个纹理为 256x256 具有水平渐变和从上到下的几个不同渐变 总共 32 条水平条纹 每条高 8 像素 我在 x 上查找