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