在iPad Pro上重新启动GLES 3原始版本

时间:2017-03-08 14:22:56

标签: ios swift ipad opengl-es

我在Apple硬件上使用OpenGL ES 3渲染动态加载的图元(线条,三角形条)(> = iOS 8)。渲染是通过索引完成的。为了节省内存,我在运行时计算索引的数量,并在GLubyte,GLushort和GLuint之间选择索引缓冲区类型。

出于性能原因,我想在单个drawcall中渲染多个不同的条带,这可以使用原始重启(=插入当前类型的最大索引:0xFF,0xFFFF或0xFFFFFFFF)来实现。要使其工作,必须启用GL_PRIMITIVE_RESTART_FIXED_INDEX。

所有iOS模拟器版本和我测试的大多数设备(iPhone 6 +,iPad mini 2)都能很好地运行。 iPad Pro上出现问题(12,9"):如果我选择GLubyte作为缓冲区类型,则原始重启不起作用,0xFF被解释为实际索引。 GLushort和GLuint按预期工作。

Here你可以找到一些带有两个三角形的示例代码(Swift),它们通过原始重启分开。更改以下行以在缓冲区类型之间切换:

//Which buffer to use?
private let indexbuffer = 0

0是GLubyte,1是GLushort,2是GLuint。如上所述,iPad Pro上的错误案例值为0。

这是iPad Pro上的图形硬件错误吗?任何人都可以证实这一点,还是我犯了某种错误?提前谢谢!

0 个答案:

没有答案