代码之家  ›  专栏  ›  技术社区  ›  Jeff Saremi

在内存分配方面发生了什么gl.texImage2D图像叫什么名字?

  •  0
  • Jeff Saremi  · 技术社区  · 6 年前

    gl.R32F gl.RGB32F ? GPU是否会继续为每个像素分配4个通道?尤其是 gl_FragColor 是一个 vec4 总是。

    1 回复  |  直到 6 年前
        1
  •  1
  •   gman    6 年前

    纹理需要多少内存还没有定义。这取决于司机。驱动程序可能将R32F存储为RGBA32F,也可能将RGB8存储为RGBA8。它可能有各种限制要求它填充行。例如,假设16字节或128字节的对齐要求,使1x10像素R8扩展到128x10字节。其他驱动程序可能需要将图像分成正方形,每个正方形具有最小或固定的大小,例如每个正方形需要16x16像素,因此12x10纹理实际占用16x16空间,25x10纹理占用32x16空间。

    真的没有办法确切知道一个纹理将使用多少空间。我知道有司机会做这些事。

    the spec

    internalformat是一个符号常量,指示使用什么格式和 最小精度 这些值应由总账存储

    规范中的其他地方

    每个纹理组件的内存分配由GL指定以匹配 或超过

    表3.13和3.14列出了每个通道的最小尺寸(以位为单位)。

    这取决于司机选择实际的存储方式。

    作为一个例子,我希望大多数桌面gpu商店 RGB5_A1 作为 RGBA8 作为一个移动GPU可能真正支持 RGB5\ U A1型 RGB5\ U A1型