目前,我正在每帧创建一个新的着色器程序,并使用它来着色形状.这导致相当大的滞后.我想知道在GLES20中是否有任何方法可以更有效地设置对象的颜色.我知道在其他版本中有一个setColor函数,但据我所知它在此版本的OpenGL ES中不存在.
解决方法:
最简单的方法是使用统一变量.您的片段着色器的声明部分将具有以下内容:
uniform vec4 objColor;
然后,您可以使用此值设置对象的颜色.
在您的Java代码(由于拥有Android标签,我认为它是Java)的代码中,链接了着色器程序后,您具有以下内容,而progId是您刚刚链接的程序的ID:
objColorLoc = GLES20.glGetUniformLocation(progId, "objColor");
然后,在进行绘制调用之前,请使用以下方法更改颜色:
GLES20.glUniform4f(objColorLoc, colR, colG, colB, 1.0f);