1

我正在开发的OpenGL / GLES应用程序上出现了一个奇怪的错误。在某个设备 ( Samsung Galaxy S8glVertexAttribPointer ) 上,如果 stride 参数设置为18字节,似乎会导致乱码。如果我向每个组件添加两个字节的填充(总共20个字节) ,乱码就会消失。

请注意,无论如何glGetError都会触发 no 。

这个错误不会出现在我测试过的任何其他移动设备上,也不会出现在我运行常规OpenGL的 Windows 计算机上。

我的猜测是步幅必须是四个字节的倍数,但我似乎找不到任何文档来验证这一点。

有谁知道步幅参数是否有设备特定要求?

(这 18 个字节由三个float32后跟三个int16_t = 3*4bytes + 3*2 个字节组成)

4

1 回答 1

2

规范要求的步幅是否对齐到 4 个字节?不。

无论如何,是否存在有效满足该要求的硬件?是的,正如 Vulkan 有此要求的事实所证明的那样。因此,您应该避免未对齐的数据。

于 2018-06-20T13:35:42.523 回答