我正在开发的OpenGL / GLES应用程序上出现了一个奇怪的错误。在某个设备 ( Samsung Galaxy S8glVertexAttribPointer
) 上,如果 stride 参数设置为18字节,似乎会导致乱码。如果我向每个组件添加两个字节的填充(总共20个字节) ,乱码就会消失。
请注意,无论如何glGetError
都会触发 no 。
这个错误不会出现在我测试过的任何其他移动设备上,也不会出现在我运行常规OpenGL的 Windows 计算机上。
我的猜测是步幅必须是四个字节的倍数,但我似乎找不到任何文档来验证这一点。
有谁知道步幅参数是否有设备特定要求?
(这 18 个字节由三个float32后跟三个int16_t = 3*4bytes + 3*2 个字节组成)