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