project for a (works on my devices) demo
This commit is contained in:
86
sources/glut.c
Normal file
86
sources/glut.c
Normal file
@@ -0,0 +1,86 @@
|
||||
#include <stdio.h> /*printf for the main*/
|
||||
#include <stdlib.h>
|
||||
#include "../headers/glut.h"
|
||||
#include "../headers/glut_timers.h"
|
||||
#include "../headers/glut_graphics.h"
|
||||
#include "../headers/glut_input.h"
|
||||
|
||||
#include "../headers/glut_backend.h"
|
||||
|
||||
int terminated=0;
|
||||
|
||||
/* sta porcata per cappare la lettura dell'input a 60FPS */
|
||||
void input_timer( int delayms){
|
||||
process_inputs();
|
||||
glutTimerFunc( 17, input_timer, 0);
|
||||
}
|
||||
|
||||
|
||||
int glutCreateWindow( const char *title){
|
||||
return create_window_implementation(title);
|
||||
}
|
||||
|
||||
/*all the init functions collassed here*/
|
||||
void glutInit( char **devPaths, int count){
|
||||
init_implementation( devPaths, count);
|
||||
}
|
||||
|
||||
void glutInitWindowPosition( int x, int y){}
|
||||
|
||||
void glutInitWindowSize( int width, int height ){
|
||||
init_window_size_implementation( width, height);
|
||||
}
|
||||
|
||||
void glutDisplayFunc( void ( *callback) ( void)){
|
||||
assignRedrawCallback( callback);
|
||||
}
|
||||
|
||||
void glutKeyboardFunc( void ( *callback) ( unsigned char key, int x, int y)){
|
||||
assignKeyboardCallback( callback);
|
||||
}
|
||||
|
||||
void glutMainLoop(){
|
||||
int cappedTimer = 0;
|
||||
glutPostRedisplay();
|
||||
/*
|
||||
SHIEET
|
||||
*/
|
||||
glutTimerFunc( 17,input_timer, 0);
|
||||
|
||||
while( ! ( terminated || timers_isEmpty())){
|
||||
cappedTimer = ( cappedTimer + 1) % 17;
|
||||
if( ! cappedTimer){
|
||||
/*
|
||||
process_inputs();
|
||||
*/
|
||||
}
|
||||
decrease_timers();
|
||||
consume_redraws(); /* the drawing potentially goes at 1000FPS, capped internally at 60 */
|
||||
sleep_implementation();
|
||||
}
|
||||
}
|
||||
|
||||
void glutPassiveMotionFunc( void ( *callback) (int x, int y) ){
|
||||
assignMouseMotionCallback(callback);
|
||||
}
|
||||
|
||||
void glutPostRedisplay(){
|
||||
issueRedraw();
|
||||
}
|
||||
|
||||
void glutSwapBuffers(){
|
||||
swap_buffers_implementation();
|
||||
}
|
||||
|
||||
void glutTimerFunc(int ms, void ( *callback)(int), int value){
|
||||
timer_list_entry* toAdd = malloc( sizeof( timer_list_entry));
|
||||
toAdd->next = NULL;
|
||||
toAdd->remaining_ms = ms;
|
||||
toAdd->callback = callback;
|
||||
timers_add( toAdd);
|
||||
}
|
||||
|
||||
void glutWarpPointer(int x, int y){
|
||||
/* this one in glut_input */
|
||||
warp_pointer_implementation(x, y);
|
||||
}
|
||||
Reference in New Issue
Block a user