OpenGL ES 3.0 Matrix/Array 步幅

OpenGL ES 3.0 Matrix/Array Stride

我有这个最终受益人:

layout(std140)uniform _ObjMatrix
{
    layout(row_major)mat4x3 ViewMatrix[256];
};

在 OpenGL 桌面上,大小为 3*Vec4*256 个元素(总大小 12288 字节)- 这正是我所期待的 = OK

然而,当 运行 在我的手机 phone 上时,OpenGL ES 3.0,大小为 4*Vec4*256 个元素(总大小 16384 字节)= 不正常

我想 std140 应该保证所有平台上的布局相同?

问题是什么以及如何解决?

我需要更小的尺寸以获得更快的性能(因为传输带宽更小)

在台式机、Apple iOS 上运行正常,但在 2 Android ARM Mali GPU 上运行失败,可能是 ARM Mali 驱动程序中的错误

这是一个已确认的 Mali 驱动程序错误,它会影响数组声明的 row_major 注释。解决方法是将 row_major 注释应用于统一块而不是数组元素:

layout(std140, row_major) uniform _ObjMatrix {
    mat4x3 ViewMatrix[256];
};