Webgl 如何从图像计算vram使用大小?
我正在学习WebGL,我想知道从imagejpg/png计算vram使用大小的公式Webgl 如何从图像计算vram使用大小?,webgl,vram,Webgl,Vram,我正在学习WebGL,我想知道从imagejpg/png计算vram使用大小的公式 谢谢。jpg或png没有区别。在上传到WebGL之前,它们将扩展为未压缩的数据。没有完美的方法来计算vram的使用情况,因为驱动程序内部实际存储的内容是未知的,但您可以估计 bytesPerPixel * width * height 其中,bytesPerPixel是从传递给gl.texImage2D的格式/类型派生的,如中所示 或 在WebGL2中,您可以从传递给同一函数的interalFormat进行计算
谢谢。jpg或png没有区别。在上传到WebGL之前,它们将扩展为未压缩的数据。没有完美的方法来计算vram的使用情况,因为驱动程序内部实际存储的内容是未知的,但您可以估计
bytesPerPixel * width * height
其中,bytesPerPixel是从传递给gl.texImage2D的格式/类型派生的,如中所示
或
在WebGL2中,您可以从传递给同一函数的interalFormat进行计算
对于WebGL1,常见值为
format type bytesPerPixel
------------------------------------------------------
gl.RGBA gl.UNSIGNED_BYTE 4
gl.RGB gl.UNSIGNED_BYTE 3
gl.LUMIANCE gl.UNSIGNED_BYTE 1
gl.ALPHA gl.UNSIGNED_BYTE 1
gl.LUMIANCE_ALPHA gl.UNSIGNED_BYTE 2
gl.RGB gl.UNSIGNED_SHORT_5_6_5 2
gl.RGBA gl.UNSIGNED_SHORT_4_4_4_4 2
gl.RGBA gl.UNSIGNED_SHORT_5_5_5_1 2
gl.RGBA gl.FLOAT 16 (if enabled)
然后,如果您上载mipmap或使用gl.generateMipmap生成mipmap,则需要以大约33%的比例进行多次应用。例如,一个16x16像素的纹理将具有
16x16 + 8x8 + 4x4 + 2x2 + 1x1 = 340
16x16 = 256
256 * 1.33 = 340.
但就像我提到的,这取决于司机。大多数司机中的一些?例如,将RGB扩展为RGBA。一些驱动程序会将各种每像素2字节的RGB/RGBA格式扩展到4字节。哇,你的答案真的很棒,非常感谢!
format type bytesPerPixel
------------------------------------------------------
gl.RGBA gl.UNSIGNED_BYTE 4
gl.RGB gl.UNSIGNED_BYTE 3
gl.LUMIANCE gl.UNSIGNED_BYTE 1
gl.ALPHA gl.UNSIGNED_BYTE 1
gl.LUMIANCE_ALPHA gl.UNSIGNED_BYTE 2
gl.RGB gl.UNSIGNED_SHORT_5_6_5 2
gl.RGBA gl.UNSIGNED_SHORT_4_4_4_4 2
gl.RGBA gl.UNSIGNED_SHORT_5_5_5_1 2
gl.RGBA gl.FLOAT 16 (if enabled)
16x16 + 8x8 + 4x4 + 2x2 + 1x1 = 340
16x16 = 256
256 * 1.33 = 340.