Android 如何在OpenGL中更改线循环的颜色?

Android 如何在OpenGL中更改线循环的颜色?,android,opengl-es,opengl-es-2.0,Android,Opengl Es,Opengl Es 2.0,我正在使用以下调用绘制一个简单的矩形线循环: GLES20.glDrawElements(GLES20.GL_LINE_LOOP, numIndices, GLES20.GL_UNSIGNED_SHORT, getIndicesBuffer()); 现在,此线循环的颜色为黑色。我怎样才能把它换成另一种颜色?例如红色。您需要更改片段着色器,我假设您要更改每行循环的颜色 将片段着色器更改为: uniform vec4

我正在使用以下调用绘制一个简单的矩形线循环:

GLES20.glDrawElements(GLES20.GL_LINE_LOOP,
                    numIndices, GLES20.GL_UNSIGNED_SHORT,
                    getIndicesBuffer());

现在,此线循环的颜色为黑色。我怎样才能把它换成另一种颜色?例如红色。

您需要更改片段着色器,我假设您要更改每行循环的颜色

将片段着色器更改为:

uniform vec4 color;

main(){
    gl_FragColor = color;
}

然后,在每个GLD元素之前,您可以调用
GLES20.glUniform4f(colorLoc,r,g,b,a)。其中
colorLoc
GLES20.glGetUniformLocation(程序,“颜色”)的返回值和r、g、b和A是所需颜色范围0-1内的红色、绿色、蓝色和alpha值。

更改片段shader@ratchetfreak你能给我一个代码示例吗?
GLES20.glGetUniformLocation(程序,“颜色”)
的参数是什么?什么是“程序”和“颜色”?颜色是一个字符串(与着色器中的统一名称相同),程序是您放置着色器的程序的标识符。谢谢!但是,我仍然不确定
程序使用什么。我在一个方法
renderFrame()
中使用了所有这些。我想我甚至没有着色器如果你调用过
glCreateProgram
那么你就有了一个程序谢谢,我想我找到了“程序”。但这只给了我一个id(int)。我现在怎么知道“颜色”是什么?