feat: control color (playing with opengl)

This commit is contained in:
2026-04-19 19:50:01 +02:00
parent d39ffe17d0
commit 35874343d1

View File

@@ -35,17 +35,21 @@ static float boxSpeed = 250.f;
const char* vShader = "#version 300 es\n"
"layout (location = 0) in vec2 aPos;\n"
"uniform mat4 uTransform;\n"
"uniform vec4 uColor;\n"
"out vec4 color;\n"
"void main()\n"
"{\n"
" gl_Position = uTransform * vec4(aPos, 0.0, 1.0);\n"
" color = uColor;\n"
"}";
const char* fShader = "#version 300 es\n"
"precision mediump float;\n"
"out vec4 FragColor;\n"
"out vec4 fragColor;\n"
"in vec4 color;\n"
"void main()\n"
"{\n"
" FragColor = vec4(1.0, 0.2, 0.3, 1.0); // red-ish\n"
" fragColor = color;\n"
"}";
void makeRotationZ(float angle, float* m)
@@ -173,6 +177,11 @@ extern "C" int APP_MAIN(int argc, char **argv) {
glEnable(GL_DEPTH_TEST);
float transform[16];
float color[4];
color[0] = 0x18 / 255.f;
color[1] = 0xFF / 255.f;
color[2] = 0x18 / 255.f;
color[3] = 0xFF / 255.f;
while (running) {
SDL_Event event;
@@ -202,12 +211,16 @@ extern "C" int APP_MAIN(int argc, char **argv) {
float angle = SDL_GetTicks() / 1000.0f; // rotates over time
float transform[16];
makeRotationZ(angle, transform);
GLuint loc = glGetUniformLocation(program, "uTransform");
GLuint tranformLoc = glGetUniformLocation(program, "uTransform");
GLuint colorLoc = glGetUniformLocation(program, "uColor");
glUseProgram(program);
glUniformMatrix4fv(loc, 1, GL_FALSE, transform);
glUniformMatrix4fv(tranformLoc, 1, GL_FALSE, transform);
color[1] = (float)((int)angle * 10 % 255) / 255.f;
glUniform4fv(colorLoc, 1, color);
glBindVertexArray(vao);