From af51348b090fe1963cc273ecc51ab86e6fe0a020 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Thu, 19 May 2022 14:07:56 +0200 Subject: [PATCH] Add kirby scene --- images/kirby.jpg | Bin 0 -> 63451 bytes includes/animations.h | 3 ++ shaders/kirby.fs | 10 +++++ shaders/kirby.vs | 15 +++++++ src/kirby.c | 91 ++++++++++++++++++++++++++++++++++++++++++ window.c | 1 + 6 files changed, 120 insertions(+) create mode 100644 images/kirby.jpg create mode 100644 shaders/kirby.fs create mode 100644 shaders/kirby.vs create mode 100644 src/kirby.c diff --git a/images/kirby.jpg b/images/kirby.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d15e76e1f9caddf27a7b09854ab82a000bac330 GIT binary patch literal 63451 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 + +void kirby(int etat) { + static GLuint boule = 0, proc_id = 0, tex_id = 0; + static GLfloat musique[3] = {0}; + + switch(etat) { + case GL4DH_INIT: + boule = gl4dgGenSpheref(20, 20); + + SDL_Surface *image = IMG_Load("images/kirby.jpg"); + SDL_Surface *surface = SDL_CreateRGBSurface(0, image->w, image->h, 32, R_MASK, G_MASK, B_MASK, A_MASK); + SDL_BlitSurface(image, NULL, surface, NULL); + SDL_FreeSurface(image); + + glGenTextures(1, &tex_id); + glBindTexture(GL_TEXTURE_2D, tex_id); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels); + SDL_FreeSurface(surface); + glBindTexture(GL_TEXTURE_2D, 0); + + proc_id = gl4duCreateProgram("shaders/kirby.vs", "shaders/kirby.fs", NULL); + + gl4duGenMatrix(GL_FLOAT, "proj"); + gl4duGenMatrix(GL_FLOAT, "view"); + + glEnable(GL_DEPTH_TEST); + break; + + case GL4DH_DRAW: + glClearColor(.66f, .17f, .24f, 1.f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glUseProgram(proc_id); + + gl4duBindMatrix("proj"); + gl4duLoadIdentityf(); + gl4duFrustumf(-1.f, 1.f, -.57f, .57f, 1.f, 1000.f); + + gl4duBindMatrix("view"); + gl4duLoadIdentityf(); + + gl4duLookAtf(2.f, 0.f, 2.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f); + + gl4duPushMatrix(); + + gl4duRotatef(135, 0, 1, 0); + + GLfloat s = moyenneMusique() * 5000.f; + if(musique[0] != 0 || musique[1] != 0) { + s = (s - musique[0]) / (musique[1] - musique[0]) + .2f; + if(s > musique[2]) { + s -= s / 20.f; + } + if(s < musique[2]) { + s += s / 20.f; + } + } + musique[1] = musique[1] < s ? s : musique[1]; + musique[0] = musique[0] > s ? s : musique[0]; + musique[2] = s; + + gl4duPushMatrix(); + if(musique[1] != musique[0]) { + gl4duScalef(s, s, s); + } + + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + gl4duSendMatrices(); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, tex_id); + glUniform1i(glGetUniformLocation(proc_id, "tex"), 0); + + gl4dgDraw(boule); + gl4duPopMatrix(); + + glUseProgram(0); + break; + + default: + break; + } +} diff --git a/window.c b/window.c index bb696bb..2c2e2b8 100644 --- a/window.c +++ b/window.c @@ -26,6 +26,7 @@ int main(int argc, char *argv[]) { { 6800, cube, NULL, NULL }, { 8500, voronoi, NULL, NULL }, { 6000, polygone, NULL, NULL }, + { 5000, kirby, NULL, NULL }, { 0, NULL, NULL, NULL } };