glVertexAttribPointer和stride参数要求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了glVertexAttribPointer和stride参数要求相关的知识,希望对你有一定的参考价值。
我在开发的OpenGL / GLES应用程序上遇到了一个奇怪的错误。在某个设备(三星Galaxy S8)上,如果stride参数设置为18个字节,则glVertexAttribPointer
似乎会导致乱码。如果我为每个组件添加两个字节的填充(总共20个字节),则jibberish消失。
请注意,无论如何都不会触发glGetError
。
我测试过的任何其他移动设备上都不会出现此错误,也不会在运行常规OpenGL的Windows计算机上发生此错误。
我的猜测是步幅需要是多个四个字节,但我似乎无法找到任何验证这一点的文档。
有谁知道stride参数是否有设备特定要求?
(18个字节由三个float32后跟三个int16_t = 3 * 4bytes + 3 * 2个字节组成)
规范要求的步幅是否与4个字节对齐?没有。
有没有硬件有效地满足这个要求?是的,正如Vulkan有此要求所证明的那样。所以你应该避免错位的数据。
以上是关于glVertexAttribPointer和stride参数要求的主要内容,如果未能解决你的问题,请参考以下文章
GLES2.0 上的 VBO glDrawElements 和 glVertexAttribPointer 不显示任何内容
glVertexAttribPointer和stride参数要求
glVertexAttribPointer() - 啥时候应该调用它?
glVertexAttribPointer 出现 JOGL 错误
C++学习(三一零)glEnableVertexAttribArray和glVertexAttribPointer的顺序关系