首页 > 解决方案 > Kivy + 3D - 仅允许 65535 个索引。我能处理这个吗?

问题描述

根据文档,索引缓冲区中只能有 65535 个索引。对于今天的 3D 图形来说,这是一个非常明智和痛苦的限制。所以,我的问题是 - 是否有可能以某种方式处理这个问题?例如,更改源代码中的某些内容?这真的是OpenGL ES 2.0 的限制吗?

这个问题实际上有一个不好的解决方案 - 拆分绘图调用,并为 3d 模型中的每个 65535 个顶点分别设置顶点和索引缓冲区,但这确实是对性能的打击,因为需要在不同部分之间复制一些顶点分割的缓冲区。

我将非常感谢有人向我解释我在哪里可以找到这部分 kivy 代码并进行更改,或者解释为什么我不能更改它,如果我真的不能。

标签: pythonopenglopengl-eskivyopengl-es-2.0

解决方案


根据

OpenGL ES Common Profile Specification Version 2.0.25(完整规范)(2010 年 11 月 2 日)

指数必须

是 UNSIGNED_BYTE 或 UNSIGNED_SHORT 之一,表示索引中的值分别是 GL 类型 ubyte 或 ushort 的索引。

所以,只要Kivy是 using OpenGL 2,我认为你就会被这个限制所困扰。

在 OpenGL 3.3 中,该限制是索引:

必须是 UNSIGNED_BYTE、UNSIGNED_SHORT 或 UNSIGNED_INT 之一,指示索引值分别为 GL 类型 ubyte、ushort 或 uint。


推荐阅读