根据 文件在索引缓冲区中只能有65535个图标。这对于今天的3D图形来说是一个非常合理和痛苦的限制。所以,我的问题是--是否有可能以某种方式处理这个问题?例如,在源代码中改变一些东西?而这 真的 OpenGL ES 2.0的限制?
其实这个问题有一个很好的解决方法--拆分绘制调用,并为3D模型中的每65535个顶点和索引缓冲区分别设置,但这确实是对性能的打击,因为一些顶点需要在拆分缓冲区的不同部分之间复制。
我真的很感谢有人能给我解释一下,我在哪里可以找到kivy代码的这一部分,并改变它,或者解释一下,为什么我不能改变它,如果我真的不能。
根据
OpenGL ES通用配置文件规范2.0.25版(完整规范)(2010年11月2日)。
指数必须
是UNSIGNED_BYTE或UNSIGNED_SHORT中的一个,分别表示索引中的值是GL类型ubyte或ushort的索引。
所以,只要 Kivy
正在使用 OpenGL 2
我认为你被这个限制所困。
在OpenGL 3.3中,这个限制是index.必须是UNSIGNED_BYTE、UNSIGNED_SHORT或UNSIGNED_INT中的一种,这表明索引值的类型是GL uby。
必须是UNSIGNED_BYTE、UNSIGNED_SHORT或UNSIGNED_INT中的一种,分别表示索引值是GL类型ubyte、ushort或uint。
如果您的 GL ES 实现支持 OES_element_index_uint
你可以自由使用的扩展 GL_UNSIGNED_INT
的索引。
我真的很感激有人能给我解释一下,我在哪里可以找到kivy代码的这一部分,并把它改掉。
除了其他答案之外,并没有什么真正从根本上限制了Kivy在OpenGL ES 2上的应用,所以如果你想使用新版本的功能可能并不难。然而,你可能找不到人简单地给你一个不同的版本。你需要研究一下 Kivy图形代码 并可能扩展opengl cython包装器。