安卓OpenGL ES 2.0 实时颜色变化

3

目前,我每帧都要创建一个新的着色器程序并将其用于为形状上色。这会造成相当多的延迟。我想知道是否有更有效的方法在GLES20中设置对象的颜色。我知道在其他版本中有一个setColor函数,但据我所知,在这个版本的OpenGL ES中它并不存在。

1个回答

3
最简单的方法是使用统一变量。你需要在片段着色器声明部分添加类似以下的内容:
uniform vec4 objColor;

然后,您可以使用这个值来设置对象的颜色。

在您的Java代码中(我猜测您正在使用Android标签),在链接着色器程序之后,您可以使用以下代码,其中 progId 是刚刚链接的程序的ID:

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

接着,在进行绘制调用之前,使用以下代码更改颜色:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接