Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,一般会在每帧更新。
#shader fragment #version 330 core layout(location = 0) out vec4 color; uniform vec4 u_Color; void main() { color = u_Color; }; int location = glGetUniformLocation(shader, "u_Color"); ASSERT(location != -1); GLCall(glUniform4f(location, 0.2f, 0.3f, 0.8f, 1.0f)); float r = 0.0f; float increment = 0.05f; /* Loop until the user closes the window */ while (!glfwWindowShouldClose(window)) { /* Render here */ glClear(GL_COLOR_BUFFER_BIT); GLCall(glUniform4f(location, r, 0.3f, 0.8f, 1.0f)); GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr)); if (r > 1.0f) increment = -0.05f; else if (r < 0.0f) increment = 0.05f; r += increment; /* Swap front and back buffers */ glfwSwapBuffers(window); /* Poll for and process events */ glfwPollEvents(); }