webgl - WebGL:是否存在 gl.MAX_TEXTURE_IMAGE_UNITS == 1 的情况
问题描述
很抱歉提出这样一个奇怪的问题,但我正在研究 WebGL 可视化的一些逻辑,并且想知道,是否存在以下情况:
gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)
等于 1?
我问是因为我想弄清楚在每个绘制调用中我可以绘制多少个顶点,并且每个顶点都需要来自多个纹理之一的一些内容。我想要支持的最小情况是我为每个绘制调用加载两个纹理,但如果有卡不支持每个绘制调用多个纹理,我需要重新考虑我的生活。
解决方案
MAX_TEXTURE_IMAGE_UNITS
需要支持的 WebGL 的最小值是 8。您可以在规范第 6.2 节中查找限制。注意:搜索“MAX TEXTURE IMAGE UNITS”(空格不带下划线)
也就是说,WebGL 对片段着色器中使用的纹理与顶点着色器中使用的纹理有不同的限制。
对于顶点着色器,WebGL1 上的最低要求是 0。您可以通过查看 来检查顶点着色器中支持的纹理数量MAX_VERTEX_TEXTURE_IMAGE_UNITS
。
还有另一个限制MAX_COMBINED_TEXTURE_IMAGE_UNITS
是您可以组合使用的纹理总数。换句话说,如果MAX_COMBINED_TEXTURE_IMAGE_UNITS
是 8、MAX_VERTEX_TEXTURE_IMAGE_UNITS
是 8 和MAX_VERTEX_TEXTURE_IMAGE_UNITS
是 4,这意味着您可以一次使用 8 个纹理,其中最多可以在顶点着色器中使用 4 个。您不能一次使用 12 个纹理。
其他最低要求
MAX VERTEX ATTRIBS 8
MAX VERTEX UNIFORM VECTORS 128
MAX VARYING VECTORS 8
MAX COMBINED TEXTURE IMAGE UNITS 8
MAX VERTEX TEXTURE IMAGE UNITS 0
MAX TEXTURE IMAGE UNITS 8
MAX FRAGMENT UNIFORM VECTORS 16
推荐阅读
- swift - Xcode/Swift:如何向 bash 执行添加额外的参数
- java - 在 Google Drive App 文件夹 Android 上创建文件
- php - 在循环不工作时使用变量外地
- javascript - Eloquent Javascript 第 11 章(第 3 版)悖论?
- c - 对函数调用的未定义引用
- c# - Restsharp 响应中缺少 Cookie,但 Postman 中没有
- vba - 从具有相同目标的不同工作表中复制粘贴
- ruby-on-rails - Instagram 抓取以获取喜欢特定媒体的用户名
- node.js - 如何在 graphql-compose 中扩展模式
- mysql - MySQL - 获取 Mass-Insert 的 LAST_INSERT_ID()