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];
};
我有这个最终受益人:
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];
};