first commit
This commit is contained in:
commit
cedf7cac74
7 changed files with 127 additions and 0 deletions
5
Makefile
Normal file
5
Makefile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
build:
|
||||||
|
gcc mmn_17.c -lglut -lGL -lGLU -lm -o mmn_17
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm mmn_17
|
37
mmn_17.c
Normal file
37
mmn_17.c
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#include <GL/freeglut.h>
|
||||||
|
#include <GL/freeglut_std.h>
|
||||||
|
#include <GL/gl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
void display(void) {
|
||||||
|
// Clear screen
|
||||||
|
glClearColor(0.0, 0.0, 0.0, 1.0); // Dark theme :)
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
glFlush();
|
||||||
|
}
|
||||||
|
|
||||||
|
void mouseEvent(int button, int state, int x, int y) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
/* initialize glut and window */
|
||||||
|
glutInit(&argc, argv);
|
||||||
|
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
|
||||||
|
glutInitWindowSize(800, 500);
|
||||||
|
glutInitWindowPosition(450, 450);
|
||||||
|
/* create window and set callbacks */
|
||||||
|
glutCreateWindow("glutLeaveMainLoop is undefined if called from a nested loop");
|
||||||
|
glutDisplayFunc(display);
|
||||||
|
glutMouseFunc(mouseEvent);
|
||||||
|
|
||||||
|
/* set projection and camera */
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
gluOrtho2D(0.0, 800.0, 0.0, 500.0);
|
||||||
|
|
||||||
|
glutMainLoop();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
0
ui.c
Normal file
0
ui.c
Normal file
12
ui.h
Normal file
12
ui.h
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#ifndef __UI_BUTTON
|
||||||
|
#define __UI_BUTTON
|
||||||
|
#include "vec.h"
|
||||||
|
|
||||||
|
typedef struct _ui_button {
|
||||||
|
vec3 relative; // Position relative to screen size
|
||||||
|
vec3 absolute; // position in pixels(added to relative)
|
||||||
|
vec3 size; // size in pixels - if screen is too small i am not sure if it is a smart idea to make everything smaller
|
||||||
|
void (*onClick); // instead of passing stuff in, im just gonna put every state variable in global scope to ensure everything lives...
|
||||||
|
} ui_button;
|
||||||
|
|
||||||
|
#endif
|
25
ui_button.h
Normal file
25
ui_button.h
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef __UI
|
||||||
|
#define __UI
|
||||||
|
#include "vec.h"
|
||||||
|
|
||||||
|
typedef struct _ui_position {
|
||||||
|
vec3 relative;
|
||||||
|
vec3 absolute;
|
||||||
|
} ui_pos;
|
||||||
|
|
||||||
|
typedef struct _ui_button {
|
||||||
|
ui_pos position;
|
||||||
|
/* x,y - width,height, z - unused */
|
||||||
|
vec3 size; // size in pixels - if screen is too small i am not sure if it is a smart idea to make everything smaller
|
||||||
|
void (*onClick); // instead of passing stuff in, im just gonna put every state variable in global scope to ensure everything lives...
|
||||||
|
char* text;
|
||||||
|
} ui_button;
|
||||||
|
|
||||||
|
typedef struct _ui_slider {
|
||||||
|
ui_pos position;
|
||||||
|
/* x - width, y - height, z - middle circle radius */
|
||||||
|
vec3 size;
|
||||||
|
float value; // Value will always range between 0 and 1
|
||||||
|
} ui_slider;
|
||||||
|
|
||||||
|
#endif
|
29
vec.c
Normal file
29
vec.c
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#include "vec.h"
|
||||||
|
|
||||||
|
vec3 vec3_new(float x, float y, float z) {
|
||||||
|
vec3 r = { x, y, z };
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 vec3_splat(float f) {
|
||||||
|
vec3 r = { f, f, f };
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 vec3_add(vec3 a, vec3 b) {
|
||||||
|
vec3 r = { a.x + b.x, a.y + b.y, a.z + b.z };
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 vec3_sub(vec3 a, vec3 b) {
|
||||||
|
vec3 r = { a.x - b.x, a.y - b.y, a.z - b.z };
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
float vec3_dot(vec3 a, vec3 b) {
|
||||||
|
return a.x * b.x + a.y * b.y + a.z * b.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 vec3_mult(vec3 a, float s) {
|
||||||
|
vec3 r = { a.x * s, a.y * s, a.z * s };
|
||||||
|
return r;
|
||||||
|
}
|
19
vec.h
Normal file
19
vec.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef _VEC
|
||||||
|
#define _VEC
|
||||||
|
|
||||||
|
typedef struct _vec3 {
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
float z;
|
||||||
|
} vec3;
|
||||||
|
|
||||||
|
const vec3 ZERO = { 0.0, 0.0, 0.0};
|
||||||
|
|
||||||
|
vec3 vec3_new(float x, float y, float z);
|
||||||
|
vec3 vec3_splat(float f);
|
||||||
|
vec3 vec3_add(vec3 a, vec3 b);
|
||||||
|
vec3 vec3_sub(vec3 a, vec3 b);
|
||||||
|
float vec3_dot(vec3 a, vec3 b);
|
||||||
|
vec3 vec3_mult(vec3 a, float s);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue