【发布时间】:2017-12-07 15:34:40
【问题描述】:
2D 纹理有两个坐标,x 和 y。要将二维数组存储在一维内存中,两种可能的格式是 [x + y * width] 和 [x * height + y]。 OpenGL 有各种令人困惑的行优先/列优先约定,所以我不确定它使用两种格式中的哪一种。这是相关的,因为如果纹理用于存储多个图像,例如在 sprite sheet 或 atlas 中,最好让图像的各个部分在内存中靠近在一起。例如,如果格式是 [x + y * width] 并且我们使用的是非常宽的纹理,那么 GPU 将不得不跳过较长的内存部分来找到它需要的纹素。
因此:高纹理图集优于宽纹理图集,还是相反?还是 GPU 没有内存局部性优势?
【问题讨论】:
-
"OpenGL 有各种令人困惑的行优先/列优先约定,所以我不确定它使用这两种格式中的哪一种。" 1) 矩阵存储与纹理存储。 2) OpenGL 只有一种矩阵约定。 3) 这并不是特别令人困惑。
标签: opengl multidimensional-array textures