0
我想要的顏色的線2.0平局線,但沒有找到合適的API做的OpenGL ES 2.0的OpenGL ES的顏色
glDrawArrays (GL_LINES , 0, 2);
glLineWidth(width_test);
有了上面的代碼,我能夠劃清界線一些寬度。現在我想爲同一行着色。有人可以引導我與API?
我想要的顏色的線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。我該怎麼做 ?請提供一些意見 –