OpenGL ES的颜色
问题描述:
我想要的颜色的线2.0平局线,但没有找到合适的API做的OpenGL ES 2.0的OpenGL ES的颜色
glDrawArrays (GL_LINES , 0, 2);
glLineWidth(width_test);
有了上面的代码,我能够划清界线一些宽度。现在我想为同一行着色。有人可以引导我与API?
答
您提供了有关您正在使用的信息的很少信息。短版本的解决方案是将制服添加到代表颜色的片段着色器中,然后在片段着色器中输出颜色。至少看到你的着色器可能会有所帮助。
所以,看看那里的着色彩色输出是:
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); // Will output white color (RGBA values)
要改变它的东西,你可以修改你将需要添加均匀的,所以你的着色器将是这个样子:
uniform lowp vec4 uniformColor;
void main() {
gl_FragColor = uniformColor;
}
现在这意味着您可以使用openGL API从CPU控制uniformColor
。您需要使用当前程序,找到统一的位置,并将想要设置的颜色值传递给颜色:
GLuint myShaderProgram; // Your program ID you got when creating the program.
GLfloat colorToSet[4] = {1.0f, .0f, .0f, 1.0f}; // Set whatever color, this should output red.
glUseProgram(myShaderProgram);
int uniformLocation = glGetUniformLocation(myShaderProgram, "uniformColor");
if(uniformLocation < 0) {
// Uniform locations must be 0 or greater, otherwise the uniform was not found in the shader or some other error occured
// TODO: handle exception
}
else {
glUniform4f(uniformLocation, colorToSet[0], colorToSet[1], colorToSet[2], colorToSet[3]);
}
... continue with drawing (glDrawArrays) ...
这是决定输出颜色的片段着色器。只需更改片段着色器即可输出所需的颜色。或者,如果您想要更改,请引入您可以设置的统一变量。 –
嘿Reto,谢谢。我是新手,学习openGL,你能帮我用代码片段吗?假设我想设置黄色线,我将如何做。 –
嗨Reto。我该怎么做 ?请提供一些意见 –