From cbaf6067d2140033d635c2f22566c7afa423fa79 Mon Sep 17 00:00:00 2001 From: user Date: Mon, 16 Mar 2009 20:13:18 +0000 Subject: [PATCH] created nt directory --- COPYING | 5 +- makefile | 8 +- src/drivers/mid/mid.c | 408 ---------------------------------------------- src/drivers/nt/mid/mid.c | 408 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 413 insertions(+), 416 deletions(-) delete mode 100644 src/drivers/mid/mid.c create mode 100644 src/drivers/nt/mid/mid.c diff --git a/COPYING b/COPYING index eaa0611..4231c72 100644 --- a/COPYING +++ b/COPYING @@ -1,12 +1,9 @@ ----------------------------------------------------------------------- -License for the platform-specific code and the Colinux -modifications in this subdirectory. - Just this version applies: Version 2. -Software is Copyright (c) The Cilux, Linux and Colinux Projects +Software is Copyright (c) The Cilux Project 2001-2009 ----------------------------------------------------------------------- diff --git a/makefile b/makefile index 629fc0a..b49adbd 100644 --- a/makefile +++ b/makefile @@ -15,7 +15,7 @@ linux: CCOPTIONS=-g -O -Wall -Wimplicit linux: COMPILEOPTIONS=-march=i386 -mtune=i586 -fPIC linux: LINKOPTIONS=-Wl,-export-dynamic -Wl,-rpath,. linux: LINKOPTIONS=-Wl,-export-dynamic -linux: INCLUDES=-I/usr/local/include -I../include -I../../include -I.. -I../platform/linux -I../../platform/linux -I../platform +linux: INCLUDES=-I/usr/local/include -I. -I../include -I../../include -I../../../include -I.. -I../platform/linux -I../../platform/linux -I../../../platform/linux linux: LIBRARIES=-L/usr/local/lib -lnsl -ldl -lm -lX11 -lEGL -lGLESv2 linux: linux-all @@ -55,9 +55,9 @@ mod-np.so: src/drivers/np/np.c src/drivers/np/uri2chan.c src/include/kernelapi.h $(STRIP) mod-np.so @echo '--------------------' -mod-mid.so: src/drivers/mid/mid.c src/include/kernelapi.h src/platform/linux/platform.h - (cd src/drivers/mid; $(CC) $(CCOPTIONS) -c mid.c -o mid.o $(COMPILEOPTIONS) $(INCLUDES)) - $(CCLIB),mod-mid.so -o mod-mid.so src/drivers/mid/mid.o +mod-mid.so: src/drivers/nt/mid/mid.c src/include/kernelapi.h src/platform/linux/platform.h + (cd src/drivers/nt/mid; $(CC) $(CCOPTIONS) -c mid.c -o mid.o $(COMPILEOPTIONS) $(INCLUDES)) + $(CCLIB),mod-mid.so -o mod-mid.so src/drivers/nt/mid/mid.o $(STRIP) mod-mid.so @echo '--------------------' diff --git a/src/drivers/mid/mid.c b/src/drivers/mid/mid.c deleted file mode 100644 index a684d80..0000000 --- a/src/drivers/mid/mid.c +++ /dev/null @@ -1,408 +0,0 @@ - -/* -------------------------------------------------------------------------- */ - -#include -#include - -/* -------------------------------------------------------------------------- */ - -#define WINDOW_WIDTH 640 -#define WINDOW_HEIGHT 480 - -#define POS_ARRAY 0 -#define NORMAL_ARRAY 1 -#define TEXCOORD_ARRAY 2 - -#define TEX_SIZE 128 - -/* -------------------------------------------------------------------------- */ - -static GLfloat xco= 0; -static GLfloat yco= 1; -static GLfloat zco= -35; -static GLfloat view_rotx=0.0, view_roty=0.0, view_rotz=0.0; -static int shift=0; - -GLuint program; -GLuint texture; -GLuint vbo; -unsigned int numberOfVertices; -unsigned int posStep; -unsigned int normStep; -unsigned int tcStep; -unsigned int stride; -float angle=0.0; -float viewAngle = 0.0; - -/* -------------------------------------------------------------------------- */ - -static int handles_resource(char* name); -static void sync_resource(ni_resource* res); -static void init_gl(void); -static void reshape(int width, int height); -static void draw(void); -static void key(unsigned char k, int down); - -static int useTheProgram(); -static int setUpTnL(); -static int drawStuff(int width, int height); - -/* -------------------------------------------------------------------------- */ - -EXPORT int mid_module_loaded(void) -{ - ni_register_driver("mid", handles_resource, sync_resource); - - init_gl(); - - k_gl_register_reshape(reshape); - k_gl_register_draw(draw); - k_gl_register_key(key); - - k_log_out("MID Driver initialised"); - - return 1; -} - -EXPORT int mid_module_event(void* data) -{ - k_log_out("MID got event: %p", data); - ni_event* evt=data; - ni_event_delete(evt); - return 1; -} - -EXPORT int mid_module_tick(void) -{ - if(!drawStuff(WINDOW_WIDTH, WINDOW_HEIGHT)) k_gl_end(); - return 1; -} - -/* -------------------------------------------------------------------------- */ - -int handles_resource(char* name) -{ - return 0; -} - -void sync_resource(ni_resource* res) -{ -} - -/* -------------------------------------------------------------------------- */ - -void init_gl(void) -{ - if(!useTheProgram()) k_gl_end(); - if(!setUpTnL()) k_gl_end(); -} - -void reshape(int width, int height) -{ -} - -void draw(void) -{ - if(!drawStuff(WINDOW_WIDTH, WINDOW_HEIGHT)) k_gl_end(); -} - -#define SHIFT 0 -void key(unsigned char k, int down) -{ - if(k == 113) viewAngle += 0.1; - if(k == 114) viewAngle -= 0.1; - - if(k==SHIFT && down){ shift=1; return; } - if(k==SHIFT && !down){ shift=0; return; } - if(!down) return; - - if(shift) k-=('a'-'A'); - - float speed=0.25; - switch (k) { - case 'H': - xco-=speed*(float)sin((view_roty-90)*3.14/180); - zco+=speed*(float)cos((view_roty-90)*3.14/180); - if(xco< -35) xco= -35; - if(xco> 35) xco= 35; - if(zco< -35) zco= -35; - if(zco> 35) zco= 35; - break; - case 'L': - xco+=speed*(float)sin((view_roty-90)*3.14/180); - zco-=speed*(float)cos((view_roty-90)*3.14/180); - if(xco< -35) xco= -35; - if(xco> 35) xco= 35; - if(zco< -35) zco= -35; - if(zco> 35) zco= 35; - break; - case 'i': - xco-=speed*(float)sin(view_roty*3.14/180); - zco+=speed*(float)cos(view_roty*3.14/180); - if(xco< -35) xco= -35; - if(xco> 35) xco= 35; - if(zco< -35) zco= -35; - if(zco> 35) zco= 35; - break; - case 'o': - xco+=speed*(float)sin(view_roty*3.14/180); - zco-=speed*(float)cos(view_roty*3.14/180); - if(xco< -35) xco= -35; - if(xco> 35) xco= 35; - if(zco< -35) zco= -35; - if(zco> 35) zco= 35; - break; - case 'j': - yco-=speed; - if(yco< 0.2) yco= 0.2; - break; - case 'k': - yco+=speed; - break; - case 'l': - view_roty += speed*20; - break; - case 'h': - view_roty -= speed*20; - break; - case 'J': - view_rotx += 2.0; - break; - case 'K': - view_rotx -= 2.0; - break; - case 'z': - view_rotz += 2.0; - break; - case 'Z': - view_rotz -= 2.0; - break; - default: - return; - } - draw(); -} - -/* ------------------------------------------------------------- */ - -GLuint isShaderError(GLuint thing) -{ - GLint isShader = glIsShader(thing); - - GLint ok; - if(isShader){ - glGetShaderiv(thing, GL_COMPILE_STATUS, &ok); - }else{ - glGetProgramiv(thing, GL_LINK_STATUS, &ok); - } - if(ok) return 0; - - GLint infoLen=0; - if(isShader){ - glGetShaderiv(thing, GL_INFO_LOG_LENGTH, &infoLen); - }else{ - glGetProgramiv(thing, GL_INFO_LOG_LENGTH, &infoLen); - } - if(infoLen){ - char* infoLog = malloc(sizeof(char)*infoLen); - if(isShader){ - glGetShaderInfoLog(thing, infoLen, NULL, infoLog); - }else{ - glGetProgramInfoLog(thing, infoLen, NULL, infoLog); - } - printf("%s: %s\n", isShader? "Shader compile": "Program link", infoLog); - free(infoLog); - } - return 1; -} - -char* file2string(const char *path) -{ - FILE *fd; - long len, r; - char *str; - - if(!(fd=fopen(path, "r"))) { - fprintf(stderr, "Can't open file '%s' for reading\n", path); - return NULL; - } - - fseek(fd, 0, SEEK_END); - len = ftell(fd); - fseek(fd, 0, SEEK_SET); - - if(!(str=malloc(len*sizeof(char)))) { - fprintf(stderr, "Can't malloc space for '%s'\n", path); - return NULL; - } - - r = fread(str, sizeof(char), len, fd); - - str[r-1] = '\0'; - - fclose(fd); - - return str; -} - -/* ------------------------------------------------------------- */ - -int useTheProgram() -{ - const char *vsSource = file2string("tnl.vert"); - const char *fsSource = file2string("tnl.frag"); - - GLuint vs = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(vs, 1, &vsSource, NULL); - glCompileShader(vs); - if(isShaderError(vs)) return 0; - - GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(fs, 1, &fsSource, NULL); - glCompileShader(fs); - if(isShaderError(fs)) return 0; - - free((void*)vsSource); - free((void*)fsSource); - - program = glCreateProgram(); - glAttachShader(program, vs); - glAttachShader(program, fs); - - glBindAttribLocation(program, POS_ARRAY, "vertPos"); - glBindAttribLocation(program, NORMAL_ARRAY, "vertNormal"); - /* vertNormal and vertTexCoord don't need to be bound here.. ? */ - glBindAttribLocation(program, TEXCOORD_ARRAY, "vertTexCoord"); - - glLinkProgram(program); - if(isShaderError(program)) return 0; - - glUseProgram(program); - - glUniform3f(glGetUniformLocation(program, "frameLightDirection"), 1.0, 0.0, 1.0); - glUniform1i(glGetUniformLocation(program, "texture"), 0); /* 0 ?? */ - - return 1; -} - -int setUpTnL() -{ - glClearColor(1.0f, 1.0f, 0.0f, 0.0f); - - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - - GLuint* td = malloc(sizeof(GLuint)*TEX_SIZE*TEX_SIZE); - int i,j; - for(i=0; i +#include + +/* -------------------------------------------------------------------------- */ + +#define WINDOW_WIDTH 640 +#define WINDOW_HEIGHT 480 + +#define POS_ARRAY 0 +#define NORMAL_ARRAY 1 +#define TEXCOORD_ARRAY 2 + +#define TEX_SIZE 128 + +/* -------------------------------------------------------------------------- */ + +static GLfloat xco= 0; +static GLfloat yco= 1; +static GLfloat zco= -35; +static GLfloat view_rotx=0.0, view_roty=0.0, view_rotz=0.0; +static int shift=0; + +GLuint program; +GLuint texture; +GLuint vbo; +unsigned int numberOfVertices; +unsigned int posStep; +unsigned int normStep; +unsigned int tcStep; +unsigned int stride; +float angle=0.0; +float viewAngle = 0.0; + +/* -------------------------------------------------------------------------- */ + +static int handles_resource(char* name); +static void sync_resource(ni_resource* res); +static void init_gl(void); +static void reshape(int width, int height); +static void draw(void); +static void key(unsigned char k, int down); + +static int useTheProgram(); +static int setUpTnL(); +static int drawStuff(int width, int height); + +/* -------------------------------------------------------------------------- */ + +EXPORT int mid_module_loaded(void) +{ + ni_register_driver("mid", handles_resource, sync_resource); + + init_gl(); + + k_gl_register_reshape(reshape); + k_gl_register_draw(draw); + k_gl_register_key(key); + + k_log_out("MID Driver initialised"); + + return 1; +} + +EXPORT int mid_module_event(void* data) +{ + k_log_out("MID got event: %p", data); + ni_event* evt=data; + ni_event_delete(evt); + return 1; +} + +EXPORT int mid_module_tick(void) +{ + if(!drawStuff(WINDOW_WIDTH, WINDOW_HEIGHT)) k_gl_end(); + return 1; +} + +/* -------------------------------------------------------------------------- */ + +int handles_resource(char* name) +{ + return 0; +} + +void sync_resource(ni_resource* res) +{ +} + +/* -------------------------------------------------------------------------- */ + +void init_gl(void) +{ + if(!useTheProgram()) k_gl_end(); + if(!setUpTnL()) k_gl_end(); +} + +void reshape(int width, int height) +{ +} + +void draw(void) +{ + if(!drawStuff(WINDOW_WIDTH, WINDOW_HEIGHT)) k_gl_end(); +} + +#define SHIFT 0 +void key(unsigned char k, int down) +{ + if(k == 113) viewAngle += 0.1; + if(k == 114) viewAngle -= 0.1; + + if(k==SHIFT && down){ shift=1; return; } + if(k==SHIFT && !down){ shift=0; return; } + if(!down) return; + + if(shift) k-=('a'-'A'); + + float speed=0.25; + switch (k) { + case 'H': + xco-=speed*(float)sin((view_roty-90)*3.14/180); + zco+=speed*(float)cos((view_roty-90)*3.14/180); + if(xco< -35) xco= -35; + if(xco> 35) xco= 35; + if(zco< -35) zco= -35; + if(zco> 35) zco= 35; + break; + case 'L': + xco+=speed*(float)sin((view_roty-90)*3.14/180); + zco-=speed*(float)cos((view_roty-90)*3.14/180); + if(xco< -35) xco= -35; + if(xco> 35) xco= 35; + if(zco< -35) zco= -35; + if(zco> 35) zco= 35; + break; + case 'i': + xco-=speed*(float)sin(view_roty*3.14/180); + zco+=speed*(float)cos(view_roty*3.14/180); + if(xco< -35) xco= -35; + if(xco> 35) xco= 35; + if(zco< -35) zco= -35; + if(zco> 35) zco= 35; + break; + case 'o': + xco+=speed*(float)sin(view_roty*3.14/180); + zco-=speed*(float)cos(view_roty*3.14/180); + if(xco< -35) xco= -35; + if(xco> 35) xco= 35; + if(zco< -35) zco= -35; + if(zco> 35) zco= 35; + break; + case 'j': + yco-=speed; + if(yco< 0.2) yco= 0.2; + break; + case 'k': + yco+=speed; + break; + case 'l': + view_roty += speed*20; + break; + case 'h': + view_roty -= speed*20; + break; + case 'J': + view_rotx += 2.0; + break; + case 'K': + view_rotx -= 2.0; + break; + case 'z': + view_rotz += 2.0; + break; + case 'Z': + view_rotz -= 2.0; + break; + default: + return; + } + draw(); +} + +/* ------------------------------------------------------------- */ + +GLuint isShaderError(GLuint thing) +{ + GLint isShader = glIsShader(thing); + + GLint ok; + if(isShader){ + glGetShaderiv(thing, GL_COMPILE_STATUS, &ok); + }else{ + glGetProgramiv(thing, GL_LINK_STATUS, &ok); + } + if(ok) return 0; + + GLint infoLen=0; + if(isShader){ + glGetShaderiv(thing, GL_INFO_LOG_LENGTH, &infoLen); + }else{ + glGetProgramiv(thing, GL_INFO_LOG_LENGTH, &infoLen); + } + if(infoLen){ + char* infoLog = malloc(sizeof(char)*infoLen); + if(isShader){ + glGetShaderInfoLog(thing, infoLen, NULL, infoLog); + }else{ + glGetProgramInfoLog(thing, infoLen, NULL, infoLog); + } + printf("%s: %s\n", isShader? "Shader compile": "Program link", infoLog); + free(infoLog); + } + return 1; +} + +char* file2string(const char *path) +{ + FILE *fd; + long len, r; + char *str; + + if(!(fd=fopen(path, "r"))) { + fprintf(stderr, "Can't open file '%s' for reading\n", path); + return NULL; + } + + fseek(fd, 0, SEEK_END); + len = ftell(fd); + fseek(fd, 0, SEEK_SET); + + if(!(str=malloc(len*sizeof(char)))) { + fprintf(stderr, "Can't malloc space for '%s'\n", path); + return NULL; + } + + r = fread(str, sizeof(char), len, fd); + + str[r-1] = '\0'; + + fclose(fd); + + return str; +} + +/* ------------------------------------------------------------- */ + +int useTheProgram() +{ + const char *vsSource = file2string("tnl.vert"); + const char *fsSource = file2string("tnl.frag"); + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &vsSource, NULL); + glCompileShader(vs); + if(isShaderError(vs)) return 0; + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, &fsSource, NULL); + glCompileShader(fs); + if(isShaderError(fs)) return 0; + + free((void*)vsSource); + free((void*)fsSource); + + program = glCreateProgram(); + glAttachShader(program, vs); + glAttachShader(program, fs); + + glBindAttribLocation(program, POS_ARRAY, "vertPos"); + glBindAttribLocation(program, NORMAL_ARRAY, "vertNormal"); + /* vertNormal and vertTexCoord don't need to be bound here.. ? */ + glBindAttribLocation(program, TEXCOORD_ARRAY, "vertTexCoord"); + + glLinkProgram(program); + if(isShaderError(program)) return 0; + + glUseProgram(program); + + glUniform3f(glGetUniformLocation(program, "frameLightDirection"), 1.0, 0.0, 1.0); + glUniform1i(glGetUniformLocation(program, "texture"), 0); /* 0 ?? */ + + return 1; +} + +int setUpTnL() +{ + glClearColor(1.0f, 1.0f, 0.0f, 0.0f); + + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + + GLuint* td = malloc(sizeof(GLuint)*TEX_SIZE*TEX_SIZE); + int i,j; + for(i=0; i