Android OpenGL ES 2.0实时变色

时间:2014-05-19 03:59:46

标签: android opengl-es colors shader

目前我正在每帧创建一个新的着色器程序并使用它来为形状着色。这导致了相当多的滞后。我想知道在GLES20中是否有任何方法可以更有效地设置对象的颜色。我知道在其他版本中有一个setColor函数,但据我所知,在这个版本的OpenGL ES中不存在。

1 个答案:

答案 0 :(得分:3)

最简单的方法是使用统一变量。您将在片段着色器的声明部分中看到类似的内容:

uniform vec4 objColor;

然后使用此值设置对象颜色。

在您的Java中(我自己有一个Android标签,我认为它是Java)代码,您在链接着色器程序后有以下内容,progId是您刚刚链接的程序的ID:

objColorLoc = GLES20.glGetUniformLocation(progId, "objColor");

然后,在进行绘制调用之前,请使用以下颜色更改颜色:

GLES20.glUniform4f(objColorLoc, colR, colG, colB, 1.0f);