Android OpenGL ES 2.0实时变色

目前,我正在每帧创建一个新的着色器程序,并使用它来着色形状.这导致相当大的滞后.我想知道在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);
上一篇:Xamarin C#Android:更改子字符串中的颜色文本?


下一篇:不能着色Tkinter按钮的边框吗?