This repository has been archived on 2023-05-27. You can view files and clone it, but cannot push or open issues or pull requests.
api8/src/manif.c

83 lines
1.9 KiB
C
Raw Normal View History

2023-05-08 09:07:48 +02:00
#include "../includes/animations.h"
static GLuint _pId = 0;
2023-05-08 10:23:45 +02:00
static GLuint _planId = 0;
2023-05-08 10:38:45 +02:00
static GLuint _herosId = 0;
static const char matrix_proj[] = "proj";
static const char matrix_model[] = "model";
static const char matrix_view[] = "view";
2023-05-08 09:07:48 +02:00
static void init(void);
static void draw(void);
void manif(int state) {
switch (state) {
case GL4DH_INIT:
init();
break;
case GL4DH_DRAW:
draw();
break;
default:
break;
}
}
static void init(void) {
2023-05-08 10:23:45 +02:00
_planId = gl4dgGenQuadf();
2023-05-08 10:38:45 +02:00
_herosId = gl4dgGenConef(3, GL_FALSE);
2023-05-08 09:08:09 +02:00
_pId =
gl4duCreateProgram("<vs>shaders/manif.vs", "<fs>shaders/manif.fs", NULL);
2023-05-08 09:07:48 +02:00
2023-05-08 10:38:45 +02:00
gl4duGenMatrix(GL_FLOAT, matrix_proj);
gl4duGenMatrix(GL_FLOAT, matrix_model);
gl4duGenMatrix(GL_FLOAT, matrix_view);
2023-05-08 09:07:48 +02:00
glEnable(GL_DEPTH_TEST);
}
static void draw(void) {
2023-05-08 10:23:45 +02:00
glClearColor(0.2f, 0.2f, 0.8f, 1);
2023-05-08 09:07:48 +02:00
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
2023-05-08 10:23:45 +02:00
glUseProgram(_pId);
2023-05-08 09:07:48 +02:00
2023-05-08 11:29:12 +02:00
const GLfloat couleur_plan[] = {0.3f, 0.3f, 0.3f, 1},
2023-05-08 12:16:29 +02:00
couleur_heros[] = {1, 1, 0, 1};
2023-05-08 10:38:45 +02:00
GLint couleur_loc = glGetUniformLocation(_pId, "couleur");
2023-05-08 11:29:12 +02:00
2023-05-08 12:16:29 +02:00
const GLfloat lumpos[] = {1, 2, 3, 1};
GLint lum_loc = glGetUniformLocation(_pId, "lumpos");
2023-05-08 11:29:12 +02:00
glUniform4fv(lum_loc, 1, lumpos);
2023-05-08 10:38:45 +02:00
gl4duBindMatrix(matrix_proj);
2023-05-08 10:23:45 +02:00
gl4duLoadIdentityf();
GLfloat ratio = (GLfloat)_dims[0] / (GLfloat)_dims[1];
gl4duFrustumf(-1, 1, -ratio, ratio, 1, 1000);
2023-05-08 10:38:45 +02:00
gl4duBindMatrix(matrix_view);
2023-05-08 10:23:45 +02:00
gl4duLoadIdentityf();
const GLfloat distance = 2;
gl4duLookAtf(0, distance, distance, 0, 0, 0, 0, 1, 0);
2023-05-08 10:38:45 +02:00
gl4duBindMatrix(matrix_model);
2023-05-08 10:23:45 +02:00
gl4duLoadIdentityf();
gl4duRotatef(-90, 1, 0, 0);
gl4duScalef(4 * distance, 2 * distance, 1);
gl4duSendMatrices();
2023-05-08 10:38:45 +02:00
glUniform4fv(couleur_loc, 1, couleur_plan);
2023-05-08 10:23:45 +02:00
gl4dgDraw(_planId);
2023-05-08 09:07:48 +02:00
2023-05-08 10:38:45 +02:00
gl4duBindMatrix(matrix_model);
gl4duLoadIdentityf();
gl4duSendMatrices();
glUniform4fv(couleur_loc, 1, couleur_heros);
gl4dgDraw(_herosId);
2023-05-08 09:07:48 +02:00
glUseProgram(0);
}