OpenGLes 2.0不支持名为 gl_PrimitiveID 的特殊内置片段着色器变量。我尝试通过将唯一属性与形成三角形的每个顶点相关联来模拟此变量。但是当两个或更多个三角形之间共享顶点时,这会导致问题。它实际上需要复制共享顶点以使这种技术能够增加复杂场景的内存使用量。
我正在考虑在openGLes库本身进行更改,以便能够在内部维护 gl_PrimitiveID 变量。我正在使用mesa 3d库来编辑openGLes 2.0的源代码。但我无法找到 glDrawElements 的实现来实现我的目的。此函数具有与其声明关联的 GL_APIENTRY 标志。
有什么建议吗?
答案 0 :(得分:1)
OpenGL或OpenGL-ES不是库。它们是系统级API,其实现深埋在GPU的驱动程序中。如果不弄乱GPU驱动程序的代码,就无法对它们进行更改。然后使用你的程序的每个人都必须使用该驱动程序。在OpenGL-ES的情况下将无法实现,因为大多数OpenGL-ES实现都存在于围绕应用程序构建围墙花园的设备中。此外,驱动程序的源代码通常保密。