Opengl es 在OpenGL ES 2.0框架中处理用户定义的着色器

Opengl es 在OpenGL ES 2.0框架中处理用户定义的着色器,opengl-es,shader,user-defined,Opengl Es,Shader,User Defined,我正在OpenGL ES 2.0中开发一个基于帧的动画框架,以开发3D图形应用程序 我对颜色、纹理、alpha…使用了一些预定义着色器。。。。其属性和一致性是已知的 现在我想处理用户给定的着色器。加载、编译和链接这些着色器很好。 但是如何将属性和制服映射到相应的数据 假设,在用户给定的着色器中,必须将顶点数据传递给属性a_顶点。 在其他一些着色器中,它可能是一个_myVertex。 因此,对于不同的用户给定着色器,传递顶点数据的属性名称将不同 我的问题是如何在用户给定的着色器中处理着色器属性和一

我正在OpenGL ES 2.0中开发一个基于帧的动画框架,以开发3D图形应用程序

我对颜色、纹理、alpha…使用了一些预定义着色器。。。。其属性和一致性是已知的

现在我想处理用户给定的着色器。加载、编译和链接这些着色器很好。 但是如何将属性和制服映射到相应的数据

假设,在用户给定的着色器中,必须将顶点数据传递给属性a_顶点。 在其他一些着色器中,它可能是一个_myVertex。 因此,对于不同的用户给定着色器,传递顶点数据的属性名称将不同

我的问题是如何在用户给定的着色器中处理着色器属性和一致性的映射

请给出一些建议


谢谢…

如果用户正在创建自己的属性名称,那么您必须要求他们指定属性所代表的内容。所以你可以在编译之前对他们的着色器代码进行字符串替换。字符串替换可能非常危险。考虑一些统一的VEC2 TEXCOORD;统一文本Coord2;现在在着色器中的texCoord上执行字符串替换。无论如何,通常不应执行此操作。在创建着色器和使用着色器的客户端时,应该就参数的命名方式进行一些交流。如果这是在你的权力范围内,你应该为每个人设定一些标准,让他们在普通制服和属性上使用相同的名字。如果这是从web粘贴的着色器,您最好知道应该检查每个着色器,并三次检查它的功能和方式。因此,在这个过程中,您还可以重命名参数以使其有意义。