我一直在寻找有关 WebGL 以及可分配用于渲染的最大纹理数/内存量的信息。这显然是特定于硬件/设备的,因此我正在寻找一种智能处理纹理的方法。
我目前有 512x512 RGBA8 格式的纹理。潜在地,用户可以将 270 个纹理加载到内存中。我知道对于 mip 贴图,它的计算结果是每像素 4 个字节乘以 4/3。因此,单个纹理加上 mip 贴图将在 4 * 512 * 512 * 1.33 = 1.33MB 的区域内。总共需要 359.1MB 来将纹理加载到内存中。
这是最坏的情况,在中/高端机器上会很好,但一旦 WebGL 在 android 和低规格机器上广泛使用,我也想针对移动设备进行优化。
如果我将纹理减少到 256x256,我会注意到质量下降,但这可能是低端设备的一个选项。这导致每个纹理总共 4 * 256 * 256 * 1.33 = 0.33MB,总共 89.1MB。
无论如何,在尝试将纹理加载到 WebGL 上下文之前,API 是否可以确定总可用纹理内存?
一次可以加载到内存中的纹理总数是否也有上限?
当用户加载我的页面时,我想使用上述两个参数来获得合理的默认值。