opengl - glVertexAttribPointer 和 stride 参数要求
问题描述
我正在开发的OpenGL / GLES应用程序上出现了一个奇怪的错误。在某个设备 ( Samsung Galaxy S8glVertexAttribPointer
) 上,如果 stride 参数设置为18字节,似乎会导致乱码。如果我向每个组件添加两个字节的填充(总共20个字节) ,乱码就会消失。
请注意,无论如何glGetError
都会触发 no 。
这个错误不会出现在我测试过的任何其他移动设备上,也不会出现在我运行常规OpenGL的 Windows 计算机上。
我的猜测是步幅必须是四个字节的倍数,但我似乎找不到任何文档来验证这一点。
有谁知道步幅参数是否有设备特定要求?
(这 18 个字节由三个float32后跟三个int16_t = 3*4bytes + 3*2 个字节组成)
解决方案
规范要求的步幅是否对齐到 4 个字节?不。
无论如何,是否存在有效满足该要求的硬件?是的,正如 Vulkan 有此要求的事实所证明的那样。因此,您应该避免未对齐的数据。
推荐阅读
- python - 如何更新pygame模块中按钮单击时出现的文本
- tensorflow - 如何在张量流中打印自定义消息?
- swift - 远离接触点的画线
- r - 在R中获得从质心到边界的距离
- visual-studio-code - VScode 集成终端启动失败
- python-3.x - Discord.py 重复消息
- javascript - 每当我访问任何网站时,网页上的图像都会有动画效果(具有图像的所有效果,如平移缩放、左右滑动)
- python - if else 语句无法识别来自输入的列表
- graph - 使用 networkx 在图中查找所有最小 st 节点切割
- c++ - c++中带有索引输入函数的二维数组