• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - OpenGL ES Tiled Texture Mipmap 问题 - iPad/iPhone

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:34:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

enter image description here我在使用 OpenGL ES 的 iPad 上遇到了传统的 tile/mipmap 问题。基本上,如果你有一个大的纹理(大于 1k X 1k),你可以把它分成几 block 并将这些 block 映射到单独的多边形上。您可以将纹理坐标钳制到边缘,它主要是有效的,但您会在边界处得到伪影。

现在我知道你为什么会得到这个,也知道传统的解决方案是什么。也就是说,您在每个较小的纹理(例如 6 像素)的外部制作一个边框。你从小纹理采样到大纹理,所以你只使用那些内部像素(比如 256-2*6)。然后将有效像素涂抹到边界区域。最后,您映射纹理坐标以仅使用那些有效的内部像素。工作正常。

如果您此时没有点头同意,请不要尝试回答。 :-)

无论如何,OpenGL 早在过去就引入了钳位模式来解决这个问题。我在 OpenGL ES 中看不到这些模式(至少在这个硬件上),我看到了对这个问题的其他引用。我想知道我是否遗漏了什么。有没有更新的方法来解决我不知道的瓷砖/边缘问题?

[更新] 结果的屏幕截图附在此处。可见线位于一个纹理的末端和另一个纹理的起点。这是使用 CLAMP_TO_EDGE。



Best Answer-推荐答案


GLES 提供 GL_CLAMP_TO_EDGE 但不提供 GL_CLAMP,它会钳制到纹理中最外层像素的中心而不是极端边缘。因此,使用 CLAMP_TO_EDGE 可以完全阻止越界(边界或环绕)访问,而 CLAMP 则不能。

CLAMP_TO_EDGE 是 GL ES 规范的一部分(根据 here for 1.1here for 2.0 ),所以如果您的硬件不支持它,那么它在技术上不符合 GL ES。它也可以在完整的 Open GL 中使用,但我认为仅在 1.2 版中可用。这意味着 CLAMP_TO_EDGE 实现了向 ES 的飞跃,但 CLAMP 没有,因为前者被认为是后者的固定版本。

在我看来 CLAMP_TO_EDGE 应该适合你正在做的事情——我误解了吗?

关于iphone - OpenGL ES Tiled Texture Mipmap 问题 - iPad/iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044805/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap