OpenGL es 2.0 glDrawElements 实现

OpenGL es 2.0 glDrawElements Implementation

OpenGLes 2.0 不支持称为 gl_PrimitiveID 的特殊内置片段着色器变量。我试图通过将一个独特的属性与形成三角形的每个顶点相关联来模拟这个变量。但是当两个或多个三角形之间共享顶点时,这会导致问题。为了使这种技术有效地增加复杂场景的内存使用量,它实际上需要复制共享顶点。

我正在考虑对 openGLes 库本身进行更改,以便能够在内部维护 gl_PrimitiveID 变量。我正在使用 mesa 3d 库来编辑 openGLes 2.0 的源代码。但是我无法找到 glDrawElements 的实现来满足我的目的。此函数具有与其声明关联的 GL_APIENTRY 标志。

有什么建议吗?


OpenGL 或 OpenGL-ES 不是库。它们是系统级 API,其实现深藏在 GPU 的驱动程序中。您不能对它们进行更改,而不会在 GPU 驱动程序的代码中乱七八糟。然后每个使用您的程序的人都必须使用该驱动程序。这在 OpenGL-ES 的情况下是不可能实现的,因为大多数 OpenGL-ES 实现都存在于围绕应用程序构建围墙花园的设备中。此外,驱动程序的源代码通常是保密的。