glVertexAttribPointer和stride参数要求

问题描述 投票:1回答:1

我在开发的OpenGL / GLES应用程序上遇到了一个奇怪的错误。在某个设备(三​​星Galaxy S8)上,如果stride参数设置为18个字节,则glVertexAttribPointer似乎会导致乱码。如果我为每个组件添加两个字节的填充(总共20个字节),则jibberish消失。

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

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

我的猜测是步幅需要是多个四个字节,但我似乎无法找到任何验证这一点的文档。

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

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

opengl opengl-es samsung-galaxy stride
1个回答
2
投票

规范要求的步幅是否与4个字节对齐?没有。

有没有硬件有效地满足这个要求?是的,正如Vulkan有此要求所证明的那样。所以你应该避免错位的数据。

© www.soinside.com 2019 - 2024. All rights reserved.