Opengl es OpenGL es 2.0 GLD组件实现

Opengl es OpenGL es 2.0 GLD组件实现,opengl-es,Opengl Es,OpenGLes 2.0不支持名为gl\u PrimitiveID的特殊内置片段着色器变量。我试图通过将唯一属性与形成三角形的每个顶点相关联来模拟此变量。但当两个或多个三角形之间存在顶点共享时,这会导致问题。为了提高复杂场景的内存使用率,该技术需要复制共享顶点 我正在考虑对openGLes库本身进行更改,以便能够在内部维护gl\u PrimitiveID变量。我正在使用mesa 3d库编辑openGLes 2.0的源代码。但我无法找到GLDraweElements的实现来满足我的目的。此函数具有

OpenGLes 2.0不支持名为gl\u PrimitiveID的特殊内置片段着色器变量。我试图通过将唯一属性与形成三角形的每个顶点相关联来模拟此变量。但当两个或多个三角形之间存在顶点共享时,这会导致问题。为了提高复杂场景的内存使用率,该技术需要复制共享顶点

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


有什么建议吗?

OpenGL或OpenGL ES不是库。它们是系统级API,其实现深入到GPU的驱动程序中。如果不在GPU驱动程序代码中乱搞,就无法对它们进行更改。然后每个使用你的程序的人都必须使用这个驱动程序。这在OpenGL ES中是不可能实现的,因为大多数OpenGL ES实现都生活在围绕应用程序构建围墙花园的设备中。此外,驱动程序的源代码通常是保密的。

如果一个顶点确实是两个面的一部分,而顶点着色器正在为其运行,您希望与之关联的面/基本体索引是什么?您使用什么逻辑来选择它所属的两个原语中的哪一个?OpenGL或OpenGL ES不是库。它们是系统级API,其实现深入到GPU的驱动程序中。如果不在GPU驱动程序中乱搞,你就不能对它们进行更改。@balajeerc:他想获得原语ID,即依次分配给每个原语的内部编号。请参阅OpenGL>=3的一个功能,但在OpenGL-ES中找不到。Mesa是开源的,他在这方面是对的。这当然没关系,因为所有其他点在这里都是有效的,而整个问题没有意义。我认为他试图做的是:对于任何给定的顶点,他想知道它所属的基本体的索引,在顶点着色器中。@balajeerc:是的,我也理解了这一点。有什么方法可以跟踪openGLes中的gl_原语ID吗?@AnkitVijay:除了分解原语,取消共享顶点并提供一种原语ID作为补充顶点属性:没有。但是最大的问题不是增加内存占用,而是更多的顶点缓存未命中,因为没有更多的共享顶点。