Opengl统一变量-TheCherno学习笔记

uniform:全局变量.传输CPU 数据到GPU

#version 330 core

layout(location = 0) out vec4 color;
//注意命名 u_
uniform vec4 u_Color;

void main()
{
    color = u_Color;
};
//传递数据
GLCall(int location = glGetUniformLocation(shader, "u_Color"));
ASSERT(location != -1)
GLCall(glUniform4f(location, 0.2f, 0.3f, 0.8f, 1.0f));


//more fun
GLCall(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();
}

//让颜色改变慢点
glfwSwapInterval(5);
posted @ 2022-11-23 20:30  shldom  阅读(45)  评论(0)    收藏  举报