shader - 来自纹理图集的 WebGL 平铺
问题描述
我将地图图块(256 像素 x 256 像素)存储在纹理图集中,并且想要选择一个图块并将其与周围的相邻 8 个图块一起绘制。我的纹理图集是这样的(为简单起见,将图块命名为 1-9):
我已经有了制作纹理图集的设置。瓷砖存储在一个随机的可用位置,我可以从瓷砖坐标中获取纹理坐标。例如,图块 5 的 texCoords 可以是:[{x: 0.00030517578125, y: 0.00018310546875}, {x: 0.01593017578125, y: 0.01580810546875}]
这适用于绘制单个图块,但现在我想用相邻的图块绘制,所以 9 个图块到帧缓冲区,如下所示:
如果这很重要,我正在使用 regl,但我正在努力解决的主要部分是如何设置着色器。我将始终只在 768 x 768 帧缓冲区中绘制 9 个图块。我可以发送纹理图集和 9 个带有 texCoords 的制服,但是我从那里去哪里?我可能会弄清楚如何用 9 个绘图调用来完成它,但它可以只用 1 个绘图调用来完成吗?
我真的很感激任何反馈。
解决方案
triangle strip
我最初是用原始和 4 个顶点位置绘制单个图块。当扩展到 9 个图块时,我无法使其正常工作。我现在明白这是因为每个顶点只有一个 texCoord,当每个图块的纹理处于随机位置时,这将不起作用。我想我可以以某种方式使用退化三角形?
我改用triangles
原始绘图,这使它变得更简单。我现在给出 54 个顶点位置和 texCoords,它现在可以按要求工作。可能有更好的方法来做到这一点,但它对我有用。
推荐阅读
- flutter - Flutter SnackBar 的高度
- java - Spring Boot 未在响应时使用自定义反序列化
- ios - 如何以编程方式准确定位 UIColorwell?
- node.js - 查询索引名称中包含冒号/连字符的弹性搜索索引
- pandas - 根据数据框中的特定字符串列创建网络
- pandas - 从 deltas 数据帧重建 L2 订单簿数据帧
- sql - 将小时数添加到日期时间字段,结果在午餐时间/假期和额外时间的工作时间内
- python - 使用 dataclasses.MISSING 作为 Python 数据类的可选参数值?
- struct - 如何在scala native中按名称访问结构成员?
- android - Android Studio 和自动登录到一个页面