我一直在寻找有关WebGL和可用于渲染的纹理数量/内存量的相关信息。这显然取决于硬件/设备,因此我正在寻找一种智能处理纹理的方法。
目前,我的纹理是512x512 RGBA8格式的。潜在地,用户可以加载270个纹理到内存中。我了解到每个像素计算4个字节,乘以4/3来计算mip贴图。因此,单个纹理加上mip贴图的总大小约为4 * 512 * 512 * 1.33 = 1.33MB。这将导致总共需要将359.1MB的纹理加载到内存中。
这是最坏情况,并且对中高端机器而言没有问题,但是我也希望在WebGL广泛可用于Android和低端机器后进行优化。
如果我将纹理缩小为256x256,我会注意到质量损失,但这可能是低端设备的选择。这将导致每个纹理的总大小为4 * 256 * 256 * 1.33 = 0.33MB,总计89.1MB。
是否有API可以在尝试将纹理加载到WebGL上下文之前确定可用的纹理内存总量?
另外,同时加载到内存中的纹理总数是否也有限制?
我想利用以上两个参数来在用户加载我的页面时设置合理的默认值。
目前,我的纹理是512x512 RGBA8格式的。潜在地,用户可以加载270个纹理到内存中。我了解到每个像素计算4个字节,乘以4/3来计算mip贴图。因此,单个纹理加上mip贴图的总大小约为4 * 512 * 512 * 1.33 = 1.33MB。这将导致总共需要将359.1MB的纹理加载到内存中。
这是最坏情况,并且对中高端机器而言没有问题,但是我也希望在WebGL广泛可用于Android和低端机器后进行优化。
如果我将纹理缩小为256x256,我会注意到质量损失,但这可能是低端设备的选择。这将导致每个纹理的总大小为4 * 256 * 256 * 1.33 = 0.33MB,总计89.1MB。
是否有API可以在尝试将纹理加载到WebGL上下文之前确定可用的纹理内存总量?
另外,同时加载到内存中的纹理总数是否也有限制?
我想利用以上两个参数来在用户加载我的页面时设置合理的默认值。