2016-11-17 328 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) ...