2016-11-17 330 views
0

我想要的颜色的线2.0平局线,但没有找到合适的API做的OpenGL ES 2.0的OpenGL ES的颜色

glDrawArrays (GL_LINES , 0, 2); 
glLineWidth(width_test); 

有了上面的代码,我能够划清界线一些宽度。现在我想为同一行着色。有人可以引导我与API?

+0

这是决定输出颜色的片段着色器。只需更改片段着色器即可输出所需的颜色。或者,如果您想要更改,请引入您可以设置的统一变量。 –

+0

嘿Reto,谢谢。我是新手,学习openGL,你能帮我用代码片段吗?假设我想设置黄色线,我将如何做。 –

+0

嗨Reto。我该怎么做 ?请提供一些意见 –

回答

0

您提供了有关您正在使用的信息的很少信息。短版本的解决方案是将制服添加到代表颜色的片段着色器中,然后在片段着色器中输出颜色。至少看到你的着色器可能会有所帮助。

所以,看看那里的着色彩色输出是:

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) ...